【发布时间】:2016-09-07 02:54:00
【问题描述】:
我是 ASP.NET MVC 的新手。我有一个带有提交按钮和 html 选择元素的简单表单,其中填充了两个项目。当表单发布到我的控制器时,所有表单值都为空。我什至尝试使用 $.POST 来代替,当它到达控制器时,我发送的 id 变量为空。这是我的代码:
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);
});
JS方法的MVC控制器
**MVC Controller**
[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult SetOptionForUser(int optionId) //null
{
string option = optionId.ToString(); //null error
return RedirectToAction("AnotherAction", "AnotherController");
}
我做错了什么?
【问题讨论】:
标签: c# jquery asp.net-mvc forms