你需要使用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