2012-03-10 43 views
2

按钮名称未传递给我的操作方法。mvc3将按钮名称传递给帖子

这是我的视图(简化):

@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按钮值始终为空。我需要做什么改变?

回答

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对发送到服务器。

0

您不以任何方式发送任何名称或值的按钮ID。

我建议你具有以下两个属性的模型:

get方法使模型的实例:

public ActionResult HandleSubmit() 
    { 
     MyModel model = new MyModel(); 
     return View(model); 
    }   

在帖子中的方法使用该模型的属性得到你的价值。

[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" /> 
}