按钮名称未传递给我的操作方法。
以下是我的观点(简化):
@using (Html.BeginForm("HandleSubmit", "Home", FormMethod.Post))
{
<input id="btnAddLineItem" type="submit" name="AddLineItem" value="AddLineItem" />
}
这是控制器方法:
[HttpPost, ActionName("HandleSubmit")]
public ActionResult HandleSubmit(int? id, string btnSubmit)
{
switch (btnSubmit)
{
case "AddLineItem":
break;
case "AddNewOrder":
break;
}
return View("OrderDetails");
}
btnSubmit值始终为null。我需要做些什么不同的事情?
答案 0 :(得分:1)
name
是绑定到您的方法签名的内容,而不是id
。
使用以下内容:
public ActionResult HandleSubmit(string AddLineItem, string AddNewOrder)
{
/* ... code ... */
if(!string.IsNullOrEmpty(AddLineItem)) {
}
else if(!string.IsNullOrEmpty(AddNewOrder)) {
}
/* ... code ... */
}
请记住,表单帖子会向服务器发送multipart/form-data
name/value
个{{1}}对集合。
答案 1 :(得分:0)
您没有以任何方式发送任何名称或价值的按钮ID。
我建议你制作一个具有以下两个属性的模型:
在get方法中创建模型的实例:
public ActionResult HandleSubmit()
{
MyModel model = new MyModel();
return View(model);
}
在post方法中,使用模型的属性来获取值。
[HttpPost, ActionName("HandleSubmit")]
public ActionResult HandleSubmit(MyModel model)
{
switch (model.Order)
{
case "AddLineItem":
break;
case "AddNewOrder":
break;
}
return View("OrderDetails");
}
您的观点可能如下所示:
@model MvcApplication3.Controllers.MyModel
@using (Html.BeginForm("HandleSubmit", "Home", FormMethod.Post))
{
@Html.EditorFor(x => Model.Order)
<input id="btnAddLineItem" type="submit" name="AddLineItem" value="AddLineItem" />
}