2012-11-30 27 views
1

我在我的网页一些Ajax的形式,我需要获得表单ID或当的onSuccess函数被调用的形式里面的一些元素,例如:Ajax.BeginForm - 获取元素,这使得请求

<li> 
    @using (Ajax.BeginForm(new AjaxOptions 
    { 
     OnSuccess = "form.onSuccess" 
    })) 
    { 

     @Html.TextBoxFor(m => m.TaskId) 

     <button type="submit">Save</button> 
    } 
</li> 

我怎样才能得到?

回答

2

选项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> 
+0

但在我的页面有很多表单,所以我需要知道确切的表单。我不想为每个名称设置不同的名称并将其传入参数中。 – MuriloKunze

+0

@MuriloKunze增加了另一个选项 – TNCodeMonkey

+0

这是解决这个问题的一种方法。但我认为这不是正确的;但如果我找不到其他方法,我会将其标记为答案。 – MuriloKunze