вам необходимо использовать ActionMethodSelectorAttribute или ActionNameSelectorAttribute , которые позволяют добавить новый атрибут в действии для вызова другого действия при нажатии соответствующей кнопки в представлении:
@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();
}
Обратите внимание, что если ваш метод Html.BeginForm в Index.cshtml, то вам не нужно указывать атрибут ActionName для Index Action, теперь AddJobExperience_Index действует так же, как Index Action.