我是ASP.NET MVC的新手。我有一个提交按钮和一个html选择元素的简单表单,填充了两个项目。当表单发布到我的控制器时,所有表单值都为空。我甚至尝试用$ .POST来做,而我发送的id变量在它到达控制器时为null。这里是我的代码:在ASP.NET MVC中发布到控制器后,下拉列表的值为空
HTML
@using (Html.BeginForm("SetOptionForUser", "MyController", FormMethod.Post, new { @class="form-inline" }))
{
@Html.AntiForgeryToken()
<div class="text-center">
<div class="form-group">
<select id="ddlSelect" class="form-control">
@foreach (var item in Model.Persons)
{
<option value="@item.Id">@item.Name</option>
}
</select>
</div>
<button type="submit" class="btn btn-primary" id="btnEnter">Go</button>
</div>
}
MVC控制器
[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult SetOptionForUser(FormCollection form)
{
string option = form["ddlSelect"].ToString(); //null error
return RedirectToAction("AnotherAction", "AnotherController");
}
似乎没有什么形式被发送。我也试过这样:
JS
$("#btnEnter").click(function (e) {
var optionId = $("#ddlSelect").val(); //this get val correctly
$.post(@Url.Action("SetOptionForUser", "MyController"), optionId);
});
MVC控制器JS方法
**MVC Controller**
[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult SetOptionForUser(int optionId) //null
{
string option = optionId.ToString(); //null error
return RedirectToAction("AnotherAction", "AnotherController");
}
我做错了吗?