Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

.net Mvc 3 Ajax.BeginForm, get the form element

I'm trying to work with the form dom element with the OnBegin & OnComplete routines of the Ajax.BeginForm helper in Mvc.

Currently I have this:

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

But within the OnBegin / OnComplete handlers, I want to work with the form dom element - is this going to be possible? I've checked the arguments passed to those handlers and I can't see anything.

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

I've even tried passing 'this' with the handlers but that only seems to pass the XHR object (or something similar)... Also, I'm reluctant to tit about with passing id's and adding more code as I'm convinced there's a simpler way.

like image 207
Phil Cooper Avatar asked Jul 30 '11 16:07

Phil Cooper


2 Answers

An an ID to your form as the 4th parameter to Ajax.BeginForm:

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

Then you can select the form by ID (#FormName).

Edit:

Or see the answers to this question

like image 152
Steve Morgan Avatar answered Sep 20 '22 19:09

Steve Morgan


I looked at the arguments also and can't see anything that will help out of the box. Another option is to add a function to your library that will add an onclick event handler to the buttons on your page. Something like

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

Then you can access clickedBtnID from your callback function. Not a perfect solution but it might be general enough.

like image 29
nthpixel Avatar answered Sep 22 '22 19:09

nthpixel