2012-03-10 19 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値は常にnullである

はここ(簡体字)私の見解です。私は何をする必要がありますか?

答えて

1

nameは、idではなく、メソッドシグネチャにバインドされているものです。次

用途:

public ActionResult HandleSubmit(string AddLineItem, string AddNewOrder) 
{ 
    /* ... code ... */ 

    if(!string.IsNullOrEmpty(AddLineItem)) { 

    } 
    else if(!string.IsNullOrEmpty(AddNewOrder)) { 

    } 

    /* ... code ... */ 
} 

がサーバにname/valueペアのmultipart/form-dataコレクションを送信するフォームポストを覚えておいてください。

0

あなたはボタンIDを何らかの名前や値で送信しているわけではありません。にモデルのプロパティを使用してPOSTメソッドで

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

:getメソッドで

モデルのインスタンスを作る:私はお勧め

は、次の2つのプロパティを持つモデルが作りますあなたの価値を得る。

@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" /> 
} 
:あなたのビューには、次のようなものにすることができます

[HttpPost, ActionName("HandleSubmit")] 
    public ActionResult HandleSubmit(MyModel model) 
    { 
     switch (model.Order) 
     { 
      case "AddLineItem": 
       break; 
      case "AddNewOrder": 
       break; 
     } 

     return View("OrderDetails"); 
    }