كيف يمكنني ربط جافا سكريبت لعنصر تحكم المخصص الخاص بي في .NET
-
16-09-2019 - |
سؤال
لقد قمت بإنشاء عنصر تحكم CustomValidator
public class MyValidator :CustomValidator, IScriptControl {}
كما أنشأت أيضا البرنامج النصي للعميل المكافئ. التحقق من صحة الخادم بشكل جيد، ومع ذلك كيف يمكنني ربط البرنامج النصي للعميل الخاص بي؟
جافا سكريبت المقدمة تبدو وكأنها
var MyValidator1 = document.all ? document.all["MyValidator1"] : document.getElementById("MyValidator1");
MyValidator1.controltovalidate = "MyField";
MyValidator1.errormessage = "error";
MyValidator1.evaluationfunction = "MyValidatorEvaluateIsValid";
كيف يمكنني تجاوز JavaScript الناتج لتعيين قيمة التقييم؟ على سبيل المثال
MyValidator1.evaluationfunction = "MyCustomJavascriptFunction";
المحلول 2
لقد أجبت هذا بنفسي لأن الإجابة الأخرى لم تحقق تماما تماما ما أردت. انتهى بي الأمر باستخدام.
public class MyValidator : BaseValidator, IScriptControl {
protected override void AddAttributesToRender(HtmlTextWriter writer) {
base.AddAttributesToRender(writer);
Page.ClientScript.RegisterExpandoAttribute(this.ClientID, "evaluationfunction", "MyJavascriptFunction");
}
}
والتي سوف تسبب التحكم في إنشاء:
MyValidator1.evaluationfunction = "MyJavascriptFunction";
نصائح أخرى
يمكنك تعيين الخاصية ClientValidationFunction في الفئة الأساسية مثل هذا -
base.ClientValidationFunction = "MyCustomJavascriptFunction";
لذلك، سوف يجعلها مثل هذا -
MyValidator1.evaluationfunction = "MyCustomJavascriptFunction";
يمكنك أن تفعل ذلك من عنصر التحكم أيضا عن طريق تعيين نفس الخاصية نفسها.
تحرير: يمكنك القيام به
document.getElementById("<%= ValidatorId %>").evaluationfunction = "MyCustomJavascriptFunction";
في الواقع أسهل بكثير هو استخدام خاصية ClientValidationFunction في ASP: CustomValidator مثل أدناه. تأكد من عدم تحديد خاصية التحكم في التحكم.
<asp:CustomValidator ClientValidationFunction="MyCustomJSFunction" Text="Required" ForeColor="Red"></asp:CustomValidator>
function MyCustomJSFunction(validator, args) {
args.IsValid = my condition;
}