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",

我的问题是如何解决这个问题,我如何确定这个 post 方法在我刚刚输入时绑定到我的视图?

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

如果您指定一个名为actionMVC 的表单字段,则会将此解释为要路由到的控制器上的操作。因此点击val1最终会执行该方法:

public ActionResult val1()
{
}

如果此方法不存在,您的错误处理将接管。

解决方案: 不要action用作表单域的名称。

于 2012-12-21T18:40:24.507 回答