2012-03-10 31 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" /> 
}