2012-09-14 210 views
0

我正在使用Ajax.BeginForm並希望將參數傳遞給用OnBegin調用的函數。以下是兩個代碼片段。ASP.NET MVC 3,Ajax.BeginForm,OnBegin和表單驗證

new AjaxOptions 
{ 
    HttpMethod = "POST", 
    UpdateTargetId = "DataEntrySummary",     
    OnBegin = "ValidateForm(11,55)" 
} 

function ValidateForm(minAge, maxAge) {return false;} 

參數被正確地傳遞給ValidateForm函數,但函數總是返回true。

如果我把參數並使用

OnBegin = "ValidateForm()" 
function ValidateForm() {return false;} 

它完美並返回false。我是否錯過了某些東西,或者是這裏不允許的參數或...

牛津的困惑 - 提前致謝。

PS - 由於非常好的原因,我無法使用C#屬性和Unobtrusive驗證(這些代碼片段)。

+0

http://stackoverflow.com/questions/4043765/modify-posted-input-values-on-onbegin-of-ajax-beginform – CrazyCoderz

回答

0

我不確定CrazyCoderz的評論是如何涉及的,但它與某些方面有關。

我發現的是,函數名稱後面的任何內容都會導致Ajax OBegin返回true。這包括OnBegin =「ValidateForm()」。 [我上面的括號中的錯誤]

我現在正在執行'work around' - 兩個之一 - 要麼寫我自己的Ajax調用從表單的測試輸入元素讀取屬性以獲取值我想要。所以,感謝CrazyCoderz讓我走上了解決方案的軌道。

3

使用

OnBegin = "return ValidateForm(11,55)" 

function ValidateForm(a,b) { 
    return a<b; 
}