Вы должны быть в состоянии создать 2 кнопки отправки, просто перехватите отправку второй кнопки с помощью javascript (событие onclick) и выполните проверку. Если это не сработает, пусть отправит, иначе вернет false в событии onclick.
В моем контроллере у меня есть пользовательская аннотация:
[HttpPost]
[MultipleButton(Name = "action", Argument = "Edit")]
public ActionResult Edit(EditViewModel model)
Мои кнопки в моем представлении определены как:
<input type="submit" value="Toevoegen" name="action:AddItemEdit" class="btn btn-primary" />
<input type="submit" value="Opslaan" name="action:Edit" class="btn btn-success" />
Пользовательская аннотация:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class MultipleButtonAttribute : ActionNameSelectorAttribute
{
public string Name { get; set; }
public string Argument { get; set; }
public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo)
{
var isValidName = false;
var keyValue = string.Format("{0}:{1}", Name, Argument);
var value = controllerContext.Controller.ValueProvider.GetValue(keyValue);
if (value != null)
{
controllerContext.Controller.ControllerContext.RouteData.Values[Name] = Argument;
isValidName = true;
}
return isValidName;
}
}
Так что, если вы хотите использовать его в качестве параметра или другие действия в вашем контроллере, вы можете использовать код в MultipleButtonAttribute для обоих. Надеюсь, это тебя куда-то приведет.