gpt4 book ai didi

c# - MVC3 asp.net 错误 : Value cannot be null. 参数名称:下拉列表中的项目

转载 作者:可可西里 更新时间:2023-11-01 08:58:18 25 4
gpt4 key购买 nike

在尝试发布数据时,我只在服务器中而不是在我的本地系统中得到转储。有一个页面向数据库提交了一些值。我还将页面中的下拉列表建模为强制性的。但是,当点击“创建”时,不会出现“丢失”之类的错误;它抛出一个垃圾场。

转储跟踪:

Value cannot be null.
Parameter name: items

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentNullException: Value cannot be null.
Parameter name: items

Source Error:


Line 65: </div>
Line 66: <div class="editor-field">
Line 67: @Html.DropDownListFor(x => x.ProjectName, new SelectList(Model.ProjectDetail, "ProjectName", "ProjectName"),"")
Line 68: <span runat="server" style="color:Red;" visible="false"> *</span>
Line 69: @Html.ValidationMessageFor(model => model.ProjectName)

Source File: d:\hosting\11178048\html\fbpm\fbpm\Views\User\Create.cshtml Line: 67

堆栈跟踪:

[ArgumentNullException: Value cannot be null. Parameter name: items]   System.Web.Mvc.MultiSelectList..ctor(IEnumerable items, String dataValueField, String dataTextField, IEnumerable selectedValues)
+289714 System.Web.Mvc.SelectList..ctor(IEnumerable items, String dataValueField, String dataTextField) +19 ASP._Page_Views_User_Create_cshtml.Execute() in d:\hosting\11178048\html\fbpm\fbpm\Views\User\Create.cshtml:67 System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +197 System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +81 System.Web.WebPages.StartPage.RunPage() +17

Controller 代码:

public ActionResult Create()
{
var model = new UserDetail
{
ProjectDetail = db1.ProjectDetails.ToList()
};
return View(model);
}

//
// POST: /User/Create

[HttpPost]
public ActionResult Create(UserDetail userdetail)
{
if (ModelState.IsValid)
{
db.UserDetails.Add(userdetail);
db.SaveChanges();
return RedirectToAction("SearchCust");
}

return View(userdetail);
}

查看代码:

@model fbpm.Models.UserDetail

@{
ViewBag.Title = "Create Customer";
}

<h2>Create Customer</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Customer Detail</legend>
<div id ="left" style="float:left; width:400px;">
<div class="editor-label">
@Html.LabelFor(model => model.UserID)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserID)
<span runat="server" style="color:Red;" visible="false"> *</span>
@Html.ValidationMessageFor(model => model.UserID)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.Password)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Password)
<span runat="server" style="color:Red;" visible="false"> *</span>
@Html.ValidationMessageFor(model => model.Password)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.UserName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserName)
@Html.ValidationMessageFor(model => model.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.PANNo)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.PANNo)
@Html.ValidationMessageFor(model => model.PANNo)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.EmailID)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.EmailID)
@Html.ValidationMessageFor(model => model.EmailID)
</div>
<br />
<p>
<input type="submit" value="Create Customer" />
</p>

</div>
<div id = "left3" style="float:left; width:400px">
<div class="editor-label">
@Html.LabelFor(model => model.ProjectName)
</div>
<div class="editor-field">
@Html.DropDownListFor(x => x.ProjectName, new SelectList(Model.ProjectDetail, "ProjectName", "ProjectName"),"")
<span runat="server" style="color:Red;" visible="false"> *</span>
@Html.ValidationMessageFor(model => model.ProjectName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.BookedDate)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.BookedDate)
<span runat="server" style="color:Red;" visible="false"> *</span>
@Html.ValidationMessageFor(model => model.BookedDate)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.BookedAmount)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.BookedAmount)
<span runat="server" style="color:Red;" visible="false"> *</span>
@Html.ValidationMessageFor(model => model.BookedAmount)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.Contact1)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Contact1)
@Html.ValidationMessageFor(model => model.Contact1)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.Contact2)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Contact2)
@Html.ValidationMessageFor(model => model.Contact2)
</div>
</div>
<div id="left1" style="float:left; width:400px;">
<div class="editor-field">
@Html.HiddenFor(model => model.Role, new { @readonly = "readonly", @Value = "400" })
@Html.ValidationMessageFor(model => model.Role)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.FullAddress)
</div>
<div class="editor-field">
@Html.TextAreaFor(model => model.FullAddress)
@Html.ValidationMessageFor(model => model.FullAddress)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.State)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.State)
@Html.ValidationMessageFor(model => model.State)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.Country)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Country)
@Html.ValidationMessageFor(model => model.Country)
</div>


</div>

</fieldset>
}

<div>
@Html.ActionLink("Back to List", "SearchCust")
</div>

我在网上搜索了很多,发现在返回 View 之前的提交 Action 中为项目名称添加一个 View 包会有帮助;但是,它没有。有人可以帮忙吗?

问候

最佳答案

我假设您只在插入失败时看到此异常;然后您尝试在同一页面的 View 中重用 UserDetail 模型。

您看到的错误是由于使用 HTTP 的性质造成的 - 任何未直接绑定(bind)到输入的内容都不会保留。因此,当您尝试重建 View 时,您尝试将下拉助手绑定(bind)到的列表为空,因为 UserDetail.ProjectDetail 尚未重新填充。您可以像这样解决这个问题:

[HttpPost]
public ActionResult Create(UserDetail userdetail)
{
if (ModelState.IsValid)
{
db.UserDetails.Add(userdetail);
db.SaveChanges();
return RedirectToAction("SearchCust");
}

userdetail.ProjectDetail = db1.ProjectDetails.ToList();

return View(userdetail);
}

关于c# - MVC3 asp.net 错误 : Value cannot be null. 参数名称:下拉列表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16995529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com