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

时间:2011-07-30 16:04:14

标签: asp.net-mvc forms dom asp.net-ajax ajax.beginform

我正在尝试使用带有OnBegin&的表单dom元素。 Mvc。

中的Ajax.BeginForm帮助程序的OnComplete例程

目前我有这个:

@using (Ajax.BeginForm("Contact", "Home", new AjaxOptions { OnBegin = "handleOnBegin" }))

但是在OnBegin / OnComplete处理程序中,我想使用表单dom元素 - 这是可能的吗?我已经检查了传递给那些处理程序的参数,但我什么也看不见。

function handleOnBegin(a, b){
  var f = <get form>;
  animateForm(f);
}

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

3 个答案:

答案 0 :(得分:6)

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

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

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

编辑:

或查看this question

的答案

答案 1 :(得分:1)

我也查看了这些论点,看不到任何有助于开箱即用的内容。另一个选项是向库中添加一个函数,该函数将向页面上的按钮添加onclick事件处理程序。像

这样的东西
var clickedBtnID = null;
$(document).ready(function()) {
    $(input[type=submit]).click(function() {
        clickedBtnID = $(this).attr("id");
    }
}

然后您可以从回调函数中访问clickedBtnID。不是一个完美的解决方案,但它可能足够普遍。

答案 2 :(得分:0)

为要使用的DOM元素提供CSS类。所以你可以通过CSS类找到元素,即使表单是部分的,也可以嵌套在其他元素中。例如。

这样的事情:

$form.find(".labelToUpdate").text(response.labelText);