كيف يمكنني ربط جافا سكريبت لعنصر تحكم المخصص الخاص بي في .NET

StackOverflow https://stackoverflow.com/questions/792858

سؤال

لقد قمت بإنشاء عنصر تحكم 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;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top