选项1:
@using (Ajax.BeginForm(new AjaxOptions{OnComplete = "DefaultEditOnComplete(xhr, status, 'Person')"}))
{
//Person data and submit button
}
function DefaultEditOnComplete(xhr, status, entityName) {
//xhr - the ajax response
//status - the response text, ex. "success"
//entityName - your custom argument, in this example 'Person'
alert('DefaultEditOnComplete fired for ' + entityName);
}
选项2:
$('form').submit(function() {
$(this).addClass('activeForm');
});
@using (Ajax.BeginForm(new AjaxOptions{OnSuccess= "JaxSuccess(xhr, status)"}))
{
....
}
function JaxSuccess(xhr, status) {
var active = $(".activeForm");
//Do some stuff here
.....
//When Done, remove the activeForm class, making everything clean
$(".activeForm").removeClass('activeForm');
}
选项3: 放弃Ajax.BeginForm,和替代形式定期和jQuery配对:
@using (Html.BeginForm("SomethingNice", "Home", FormMethod.Post, new { @id = "CoolForm", @class = "ajaxForm" }))
{
@Html.LabelFor(m => m.Rating)
@Html.TextBoxFor(m => m.Rating)
@Html.LabelFor(m => m.Comment)
@Html.TextBoxFor(m => m.Comment)
<input type="submit" value="Submit"/>
}
<script type="text/javascript">
$(function() {
$(".ajaxForm").submit(function(e) {
e.preventDefault();
var form = $(this);
var jaxUrl = form.attr('action');
var dat = form.serialize();
alert(form.attr('id'));
$.ajax({
url: jaxUrl,
data: dat,
success: function(data) {
form.parent().append(data);
},
error: function(xhr, status) {
}
});
});
});
</script>
但在我的页面有很多表单,所以我需要知道确切的表单。我不想为每个名称设置不同的名称并将其传入参数中。 – MuriloKunze
@MuriloKunze增加了另一个选项 – TNCodeMonkey
这是解决这个问题的一种方法。但我认为这不是正确的;但如果我找不到其他方法,我会将其标记为答案。 – MuriloKunze