0

フォームビューに次のように定義されたフォームがあります

using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))

このフォームは、タイプのボタンとボタンの入力の数を続けます

<input type="submit" value="val1" name="action">
<input type="submit" value="val2" name="action">
<input type="submit" value="val3" name="action" />
<button class="button" type="submit" name="action" value="val4">Val4</button>

このビューには2つのコントローラーがあります

Public ActionResult form{
} 

[HttpPost]
public ActionResult form(String button)
{
  switch (actionType)
  {
    case "val1":
      return RedirectToAction("AnotherView"); 
    case "val2":
      return RedirectToAction("AnotherView2");
    default:
      return RedirectToAction("AnotherView3");
  }
} 

しかし、どのボタンをクリックしても、フォームで定義されたホームにリダイレクトされます

using (Html.BeginForm("Index", "Home",

私の質問は、これを修正するにはどうすればよいですか?また、入力したばかりのように、この投稿メソッドがビューにバインドされていることを確認するにはどうすればよいですか?

4

2 に答える 2

0
using (Html.BeginForm("action_name", "controllername", FormMethod.GET, new { enctype = "multipart/form-data" }))

入力タイプの選択を使用:

<select name="action">
<option value="val1" >val1</option>
<option value="val2" >val2</option>
<option value="val3" >val3</option></select>

コントローラーでのメソッド

public ActionResult action_name(String action){
   switch (action)
  {
        case "val1":
          return RedirectToAction("AnotherView"); 
        case "val2":
          return RedirectToAction("AnotherView2");
        default:
          return RedirectToAction("AnotherView3");
  }
}
于 2012-12-21T17:43:32.170 に答える
0

MVCという名前のフォーム フィールドを指定するactionと、これがルーティング先のコントローラーのアクションとして解釈されます。したがって、クリックするval1と最終的にメソッドが実行されます。

public ActionResult val1()
{
}

このメソッドが存在しない場合、エラー処理が引き継がれます。

解決策: フォーム フィールドの名前として使用しないでください。action

于 2012-12-21T18:40:24.507 に答える