你需要使用ActionMethodSelectorAttribute或ActionNameSelectorAttribute允许对行动增加新的属性来调用相应的按钮的不同作用点击 在View:
@using (Html.BeginForm())
{
<input type="submit" value="Add Experience" name="AddExperience" />
<input type="submit" value="Add Experience" name="AddJobExperience" />
}
在应用程序中添加新的类FormValueRequiredAttribute这扩展ActionMethodSelectorAttribute类以检查哪个按钮被点击
//controller/FormValueRequiredAttribute.cs
public class FormValueRequiredAttribute : ActionMethodSelectorAttribute
{
public string ButtonName { get; set; }
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
{
var req = controllerContext.RequestContext.HttpContext.Request;
return !string.IsNullOrEmpty(req.Form[this.ButtonName]);
}
}
那么你应该行动添加此属性调用相应的动作
在控制器
[HttpPost]
[FormValueRequired(ButtonName = "AddExperience")]
public ActionResult Index(CandidateViewModel viewModel)
{
return View();
}
[HttpPost]
[ActionName("Index")]
[FormValueRequired(ButtonName = "AddJobExperience")]
public ActionResult AddJobExperience_Index(CandidateViewModel viewModel)
{
return View();
}
注意如果您Index.cshtml方法Html.BeginForm那么你不需要指定的索引操作ActionName属性,现在AddJobExperience_Index的行为与索引操作相同。
你不需要你的'[ActionName]'s。 – SLaks 2011-12-18 00:06:11
我意识到问题不是[ActionName],但事实上我有一个Http.BeginForm()中的Http.BeginForm()。但问题依然存在。如何做一个邮政回来添加到收藏。 – jmogera 2011-12-18 00:10:50
我没有回答这个问题;我指出了一个冗余。 – SLaks 2011-12-18 00:12:36