javascript OO问题 - 在c#对象中指定私有成员函数?

时间:2009-11-10 14:03:43

标签: c# asp.net javascript

我不确定如何在javascript中实现以下功能,或者即使我正确地考虑它。基本上我想将javascript成员函数附加到每个呈现的自定义对象,所以我可以在C#中使用这样的东西:

public class NumericTextBox : TextBox
{
    ...
    string clientScript = "function isValid() { return isNumericValue(this.value); }"; 
    AttachValidationFunction(clientScript);
}

public class EmailTextBox : TextBox
{
    ...
    string clientScript = "function isValid() { return isEmail(this.value); }"; 
    AttachValidationFunction(clientScript);
} 

然后在页面中使用以下javascript函数

function isFormValid() {
    var controls = getElementsByClass("validatingControl");
    ...
    if (!controls[i].isValid()) return false;
    ...
}

显然是伪代码,但希望能给出我需要实现的目标。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我要做的是确保AttachValidationFunction接收this.ClientID以及验证函数,添加到列表(例如,Dictionary<String, String>),并在渲染时,注册一个javascript块与所有添加的控件的数组,其结果如下所示:

<script type="text/javascript">
var controlsToValidate = [
   { id: 'ctl00_txtNumeric', validate: function(e) { return isNumeric(e.value); } },
   { id: 'ctl00_txtEmail', validate: function(e) { return isEmail(e.value); } }
];
</script>

然后你可以像这样遍历那个数组:

<script type="text/javascript">
function isFormValid() {
   for(var i = 0; i < controlsToValidate.length; i++) {
      var control = controlsToValidate[i];
      var field = document.getElementById(control.id);

      if(!control.validate(field))
         return false;
   }

   return true;
}
</script>

我希望这很清楚。