我正在使用tempdata绑定我的DDL,它基本上都是用户名和用户ID,如下所示。
<div class="form-group">
@Html.LabelFor(model => model.AssignedTo, "Assigned To : ", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("UserID", TempData["UserList"] as SelectList, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.ValidationMessageFor(model => model.AssignedTo, "", new { @class = "text-danger" })
</div>
</div>
在控制器中我试图获取如下的值。
public ActionResult Create(WMTProjects prj)
{
prj.AssignedTo
我的值为0,我应该得到相应用户的用户ID。
我工作正常,直到我改变了
@using (Html.BeginForm("Create", "CreateProjects", FormMethod.Post, new { id = "FormId" }))
到
@using (Html.BeginForm())
并将我的按钮属性更改为
<input type="submit" value="Create" formaction="Create" formmethod="post" class="btn btn-default" />
不确定这种方法有什么问题。
答案 0 :(得分:1)
您正在为名为UserID
的属性生成下拉列表,而不是AssignedTo
(并更改@Html.BeginForm()
与此无关)
提交表单时,AssignedTo
没有名称/值对,因此设置为默认值(0
属性为int
)
更改代码以生成下拉列表
@Html.DropDownListFor(m => m.AssignedTo, TempData["UserList"] as SelectList, new { @class = "control-label col-md-2" })