В первый раз, когда я столкнулся с этим, я наткнулся на хак onclick () / js, когда выбор не пред / следующий, который мне все еще нравится из-за его простоты. Это выглядит так:
@model myApp.Models.myModel
<script type="text/javascript">
function doOperation(op) {
document.getElementById("OperationId").innerText = op;
// you could also use Ajax to reference the element.
}
</script>
<form>
<input type="text" id = "TextFieldId" name="TextField" value="" />
<input type="hidden" id="OperationId" name="Operation" value="" />
<input type="submit" name="write" value="Write" onclick='doOperation("Write")'/>
<input type="submit" name="read" value="Read" onclick='doOperation("Read")'/>
</form>
При нажатии любой кнопки отправки она сохраняет нужную операцию в скрытом поле (которое является строковым полем, включенным в модель, с которой связана форма) и отправляет форму контроллеру, который принимает все решения. В контроллере вы просто пишете:
// Do operation according to which submit button was clicked
// based on the contents of the hidden Operation field.
if (myModel.Operation == "Read")
{
// do read logic
}
else if (myModel.Operation == "Write")
{
// do write logic
}
else
{
// do error logic
}
Вы также можете немного усилить это, используя числовые коды операций, чтобы избежать разбора строки, но если вы не играете с Enums, код становится менее читабельным, изменяемым и самодокументируемым, и разбор в любом случае тривиален.