2010-11-28 33 views
1

我定製的ASP.Net的RequiredFieldValidator呈現類似這樣的標記......ASP.Net的RequiredFieldValidator定製EvaluationFunction財產

var af1_ctl00 = document.all ? document.all["af1_ctl00"] : document.getElementById("af1_ctl00"); 
af1_ctl00.controltovalidate = "af1_af1_txt"; 
af1_ctl00.display = "None"; 
af1_ctl00.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid"; 
af1_ctl00.initialvalue = ""; 

然而,似乎沒有辦法設置evaluationfunction財產。我需要這樣做來調用一些自定義腳本。

我試過以下方法。

  • 添加新的屬性,當控制被渲染,並且當屬性被呈現
  • 的removeAttribute調用隨後Attributes.Add
  • 試圖通過JavaScript重置。

似乎沒有任何工作。

如果我可以得到一個解決方案,在c#代碼中設置屬性之前渲染,這將是我在做什麼最好的。

+0

請參閱我的答案http://stackoverflow.com/questions/792858/how-do-i-hook-up-javascript-to-my-customvalidator-control-in-net/37150996#37150996 – 2016-05-11 18:04:26

回答

1

這樣做解決了以下....

ASP.Net驗證實際的頁面,這是在Javascript DOM對象上定義的跨度。然後他們爲該對象添加屬性。所以你在ASP.Net生成的代碼中得到類似的東西。

af1_ctl00.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid"; 

你可以再注入一些JavaScript到您的網頁,做這樣的事情使用Page.ClientScript.Register(....)在後面的代碼......

function NewValidationFunction() { 
    return (1 == 1); 
} 

var val = document.getElementById('af1_ct100'); 
val.evaluationfunction = NewValidationFunction; 

驗證功能現在已更改爲使用您的自定義功能。