Я часто использую класс viewmodel, переданный в view, и в этой viewmodel у меня есть:
public string submit { get; set; }
public bool SaveButtonClicked()
{
return this.submit.Equals("save");
}
public bool CancelButtonClicked()
{
return this.submit.Equals("cancel");
}
Тогда в контроллере
[HttpPost]
public ActionResult Save(MyViewModel inputViewModel)
{
if(inputViewModel.SaveButtonClicked()) {}
blah.......
}
Мой взгляд выглядит следующим образом
@using (Html.BeginForm())
{
// Other stuff.
<input type="submit" name="submit" value="Save" />
<input type="submit" name="submit" value="Cancel" />
}
Это работает очень хорошо для меня. Когда кнопки отправки используют одно и то же имя, при нажатии любой из них это имя передается свойству submit
модели представления. Не уверен, что иметь дублирующиеся имена - плохая идея, но для моих нужд это хорошо.