Лично я бы использовал стандартный Html.BeginForm
помощник с атрибутами HTML5 data-*
, который я сам AJAXify:
@using (Html.BeginForm(
"Create",
"Comment",
FormMethod.Post,
new { data_id = Model.Id }
))
{
...
}
, который выводит:
<form action="/Comment/Create" data-id="some id here" method="post">
...
</form>
, а затем вотдельный файл javascript, на который я бы подписался на событие .submit
:
$(function() {
$('form').submit(function() {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
dataId: $(this).data('id'), // <- pass the data-id HTML5 attribute
success: handleSuccess
});
return false;
});
});
function handleSuccess(result) {
$('#newComment').html(result);
// fetch the data-id of the form that trigerred the AJAX request
var id = this.dataId;
// TODO: do something with this id
}
Я предпочитаю эту технику по сравнению с помощниками Ajax.*
, так как она дает мне весь контроль, который мне может понадобиться.Другое преимущество заключается в том, что мы получаем четкое разделение между скриптом и разметкой, что делает код красивым и аккуратным.