Передайте действие, которое будет выполнено через ViewData.
В вашем действии, которое отображает представление, создайте элемент ViewData для действия обратной передачи. В вашей форме укажите этот элемент ViewData для заполнения параметра действия. Кроме того, вы можете создать модель только для просмотра, которая включает в себя свойства и фактическую модель в качестве свойств, и ссылаться на нее оттуда.
Пример использования ViewData:
using (Html.BeginForm( (string)ViewData["PostBackAction"], "Candidate", ...
Рендеринг действий:
public ActionResult Create()
{
ViewData["PostBackAction"] = "New";
...
}
public ActionResult Edit( int id )
{
ViewData["PostBackAction'] = "Update";
...
}
Пример использования модели
public class UpdateModel
{
public string Action {get; set;}
public Candidate CandidateModel { get; set; }
}
using (Html.BeginForm( Model.Action, "Candidate", ...
Рендеринг действий:
public ActionResult Create()
{
var model = new UpdateModel { Action = "New" };
...
return View(model);
}
public ActionResult Edit( int id )
{
var model = new UpdateModel { Action = "Update" };
model.CandidateModel = ...find corresponding model from id...
return View(model);
}
РЕДАКТИРОВАТЬ : На основании вашего комментария, если вы считаете, что это должно быть сделано в представлении (хотя я не согласен), вы можете попробовать некоторую логику на основе ViewContext.RouteData
<%
var action = "Create";
if (this.ViewContext.RouteData.Values["action"] == "Edit")
{
action = "Update";
}
using (Html.BeginForm( action, "Candidate", ...
{
%>