C# 参数字典包含参数';SolutionArchitectID';不可为空的类型';System.Int32';

C# 参数字典包含参数';SolutionArchitectID';不可为空的类型';System.Int32';,c#,asp.net,drop-down-menu,html-helper,C#,Asp.net,Drop Down Menu,Html Helper,不确定我创建的下拉列表是否发送选定值。我是否缺少DropDownList helper的一个参数 创建下拉列表方法 List<SelectListItem> EmployeeList = new List<SelectListItem>(); foreach (Employee e in db.Employees) { EmployeeList.Add(new SelectListItem { Text = e.F

不确定我创建的下拉列表是否发送选定值。我是否缺少DropDownList helper的一个参数

创建下拉列表方法

List<SelectListItem> EmployeeList = new List<SelectListItem>();

        foreach (Employee e in db.Employees)
        {
            EmployeeList.Add(new SelectListItem { Text = e.FirstName + " " + e.LastName, Value = e.SolutionArchitectID.ToString() });
        }

ViewBag.EmployeeList = EmployeeList;
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult UpdateDetails(int SolutionArchitectID) {

Asset currAppRecord = db.Assets.Where(a => a.ApplicationID == ApplicationID).Single();
...
currAppRecord.SolutionArchitectID = SolutionArchitectID;
...
}
查看

@using (Html.BeginForm("UpdateDetails", "Atlas"))
{
 ...
        <div class="form-group">
            <label class="control-label col-md-2" for="Employees">Solution Architect</label>
            <div class="col-md-10">
                @Html.DropDownList("EmployeeList")
            </div>
        </div>
...
}
使用(Html.BeginForm(“UpdateDetails”、“Atlas”)) { ... 解决方案架构师 @Html.DropDownList(“员工列表”) ... }
SolutionArchitectID是提交时要在db表中更新的字段。

在使用的
中,没有名为SolutionArchitectID的Html控件。要成功提交表格,您需要通过SolutionarChitecID。如下面代码所示

@using (Html.BeginForm("UpdateDetails", "Atlas"))
{
 ...
        <div class="form-group">
            <label class="control-label col-md-2" for="Employees">Solution Architect</label>
            <div class="col-md-10">
                @Html.DropDownList("EmployeeList")
                @Html.Hidden("SolutionArchitectID", <<PutHereSomeValue>>)   
            </div>
        </div>
...
}
使用(Html.BeginForm(“UpdateDetails”、“Atlas”)) { ... 解决方案架构师 @Html.DropDownList(“员工列表”) @Html.Hidden(“SolutionarChitecId”,) ... }
我认为以下问题的答案会更有帮助

  • 您将如何获得SolutionarChitecId的价值
  • 是否会连同表格寄回

我想,问题在于您的操作方法参数接收空字符串。请尝试在url中发送该参数的整数值,然后重试。或者,您可以将参数类型设置为
string
,并在控制器中解析它以进行处理。如果我从控制器中的更新方法中删除SolutionarChitecId参数,则表单更新将正常进行,这就是为什么我认为我对DropDownList助手使用了错误的重载。我认为您需要发布一些示例代码,显示从视图到控制器的流程(例如:使用操作方法签名和您使用的正确标记等)。包括更多视图,以及提交表单时调用的更新方法。确定。下拉列表中的值类型是数字还是文本?尝试使用
@Html.DropDownList(“SolutionarChitecId”)
并查看控制器中的绑定值是否正确。如果下拉列表
value
为文本,则尝试将控制器签名更改为:
public ActionResult UpdateDetails(string solutionarchitecid){
SolutionarChitecId是提交时db表中要更新的字段。为了清晰起见,将其添加到原始帖子中。请将表单标记与控制器方法一起发布,以帮助您更好地进行编辑。在视图中包含表单,以及提交表单时调用的更新方法