我的表单视图中有一个表单定义为
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方法是否绑定到我的视图中,因为我只是输入了它?
答案 0 :(得分: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");
}
}
答案 1 :(得分:0)
如果指定名为action
的表单字段,MVC会将此解释为要路由到的控制器上的操作。因此,单击val1
将最终执行方法:
public ActionResult val1()
{
}
如果此方法不存在,您的错误处理将接管。
解决方案:请勿使用action
作为表单字段的名称。