.net Mvc 3 Ajax.BeginForm,获取表单元素

Phi*_*per 5 forms asp.net-mvc dom asp.net-ajax ajax.beginform

我正在尝试使用表单dom元素与Mvc中的Ajax.BeginForm帮助程序的OnBegin和OnComplete例程.

目前我有这个:

@using (Ajax.BeginForm("Contact", "Home", new AjaxOptions { OnBegin = "handleOnBegin" }))
Run Code Online (Sandbox Code Playgroud)

但是在OnBegin/OnComplete处理程序中,我想使用表单dom元素 - 这是可能的吗?我已经检查了传递给那些处理程序的参数,我看不到任何东西.

function handleOnBegin(a, b){
  var f = <get form>;
  animateForm(f);
}
Run Code Online (Sandbox Code Playgroud)

我甚至尝试用处理程序传递'this',但这似乎只是传递了XHR对象(或者类似的东西)......而且,我不愿意传递id并添加更多代码,因为我确信有一种更简单的方法.

Ste*_*gan 6

表单的ID作为Ajax.BeginForm的第4个参数:

@using (Ajax.BeginForm("Contact", "Home", 
        new AjaxOptions { OnBegin = "forms.onBegin", OnComplete = "forms.onComplete" },
        new { id = "FormName" }))
Run Code Online (Sandbox Code Playgroud)

然后,您可以按ID(#FormName)选择表单.

编辑:

或者看看这个问题的答案

  • 我同意这是一个选项,但我不想在处理这些回调的通用库中添加特定的表单ID.分离关注点和所有这些,我宁愿处理程序以某种方式解决这个问题. (5认同)
  • 此签名在MVC5中不再有效.它应该是`Ajax.BeginForm("Contact","Home",null,new AjaxOptions,new HtmlAttributes` noitce for routevalues的null. (2认同)