2010-10-12 144 views
0

我想在使用ASP.NET MVC2客戶端驗證更新客戶端錯誤時觸發一些自定義代碼。我已經找到了這個功能,我想掛接到:ASP.NET MVC2 - 掛鉤到客戶端驗證

Sys.Mvc.FormContext.prototype = { 

    // ... 

    _displayError: function Sys_Mvc_FormContext$_displayError() { 
     if (this._validationSummaryElement) { 
      if (this._validationSummaryULElement) { 
       Sys.Mvc._validationUtil.removeAllChildren(this._validationSummaryULElement); 
       for (var i = 0; i < this._errors.length; i++) { 
        var liElement = document.createElement('li'); 
        Sys.Mvc._validationUtil.setInnerText(liElement, this._errors[i]); 
        this._validationSummaryULElement.appendChild(liElement); 
       } 
      } 
      Sys.UI.DomElement.removeCssClass(this._validationSummaryElement, Sys.Mvc.FormContext._validationSummaryValidCss); 
      Sys.UI.DomElement.addCssClass(this._validationSummaryElement, Sys.Mvc.FormContext._validationSummaryErrorCss); 
     } 
    }, 

    // ... 

}  

我如何可以覆蓋該功能,使得我的代碼可以

  • 調用原函數
  • 然後做一些其他的工作

回答

0

找到它。

<script type="text/javascript"> 
    $(function() { 
     var old_displayError = Sys.Mvc.FormContext.prototype._displayError; 
     Sys.Mvc.FormContext.prototype._displayError = function() { 
      old_displayError.apply(this); 
      // do other stuff here 
     } 
    }); 
</script> 

我不習慣重寫原型函數,所以我被困了一下。

+0

還有什麼你必須做的才能讓這個工作?我試圖做同樣的事情,當我的客戶端驗證觸發時,上面的代碼似乎並沒有被調用。 – Anthony 2010-12-09 20:45:50