Ajax.BeginForm(),OnSuccess - 获取事件目标

Cri*_* E. 6 c# ajax.beginform asp.net-mvc-3

我无法获得触发OnSuccess()方法的元素的目标Ajax.BeginForm().所以这是代码片段:

@using (Ajax.BeginForm("InsertModel", "Home", new AjaxOptions
{
    HttpMethod = "POST",
    OnSuccess = "doWork(this,'SomeCustomText')"
}))
{
    <div id="container">
       <--Some HTML--!>
      <input type="submit" value="OK"/>
    </div>
}

<script>
function doWork(e,customText)
{
   alert(customText);  //It shows 'SomeCustomText', so its good.

   alert(e);  //[Object] object
   alert(e.prop("tagName"));  //Object #<Object> has no method 'prop' 
   alert(e.attr("tagName"));  //Object #<Object> has no method 'attr' 
   alert(jQuery(e).html());  //undefined
   alert(jQuery(e).prop("tagName"));  //undefined
   alert(e.target);  //undefined
   alert(jQuery(e).target);  //undefined
 }
<script/>
Run Code Online (Sandbox Code Playgroud)

问题:

如何获得目标?!谢谢

更新1

jQuery版本应该如下所示:

jQuery.ajax({
    url:"/Home/InsertModel",
    data:"some post data",
    type:"POST",
    success:function(data){ 
          doWork(this,data); // so i really do not care about data! I just need jQuery(this)
    }
  })
Run Code Online (Sandbox Code Playgroud)

hjg*_*aca 5

如果你想访问表单元素,你有很多选择,如果页面上只有一个表单,你可以这样做$("form"),jquery 会给你表单元素。

另一种选择是更改 Ajax.BeginForm 构造函数,该构造函数将表单 id 作为参数,如下所示:

@using (Ajax.BeginForm("InsertModel", "Home",null, new AjaxOptions
{
    HttpMethod = "POST",
    OnSuccess = "doWork('SomeCustomText')"
}, new {id = "myFormId"}))
{
    <div id="container">
       <--Some HTML--!>
      <input type="submit" value="OK"/>
    </div>
}
Run Code Online (Sandbox Code Playgroud)

在 javascript 中

<script>
function doWork(customText)
{
   alert(customText);  //It shows 'SomeCustomText', so its good.

   // find the form by id
   $("#myForm1");

   // find forms in the page
   $("form")


 }
<script/>
Run Code Online (Sandbox Code Playgroud)

在普通的 JQuery 中:

$.ajax({
    url:"/Home/InsertModel",
    data:"some post data",
    type:"POST",
    success:function(data){ 
       // find the form by id
       $("#myForm1");

       // find forms in the page
       $("form")        

       ...
    }
  });
Run Code Online (Sandbox Code Playgroud)