سؤال

أود حقا استخدام التحقق من صحة مسج المساعد في بلدي ASP.NET نماذج ويب التطبيق (لا MVC).أجد أنه أسهل من إضافة asp المصادقون في كل مكان و وضع التحكم للتحقق من صحة الحقل على كل منهم.

أنا مجرد وجود بعض القضايا سواء عند وضع الطبقة مثل هذه class="البريد الإلكتروني المطلوب" الذي أعتقد أنه قد تفعل شيئا مع وجود شكل الوسم في النموذج الرئيسي الوسم.

أنا أيضا واجهت مشاكل عند الاتصال مسج التحقق من صحة باستخدام الأسماء التي أصبحت مشوهة في asp التحكم

// validate signup form on keyup and submit
$("#signupForm").validate({
    rules: { 
        username: {
            required: true,
            minlength: 2
        }, },
    messages: { 
        username: {
            required: "Please enter a username",
            minlength: "username at least 2 characters"
        }, 
    }.

.......

        <p>
            <label for="username">
                Username</label>
            <input id="username" name="username" />
        </p>

لأن هذا

<asp:TextBox ID="tbUsername"  runat="server"></asp:TextBox>

كما يجعل

<input name="ctl00$ContentPlaceHolder1$tbUsername" type="text" id="ctl00_ContentPlaceHolder1_tbUsername" />

و mangles الاسم.يمكنني الحصول على ClientID باستخدام <%=tbUsername.ClientID %>ولكن هذا لا يعمل مع ClientName

وقد أي شخص لديه أي النجاح باستخدام مسج المساعد مع المصادقة asp.net?إذا كان الأمر كذلك ماذا عن استخدام أشكال متعددة مثل استخدام منفصلة التحقق من صحة الجماعات ؟

هل كانت مفيدة؟

المحلول

ويمكنك الخروج من إضافة وظيفة ، ولكن أساسا هنا ما يمكنك القيام به:

jQuery(function() {
    // You can specify some validation options here but not rules and messages
    jQuery('form').validate(); 
    // Add a custom class to your name mangled input and add rules like this
    jQuery('.username').rules('add', { 
        required: true, 
        messages: { 
            required: 'Some custom message for the username required field' 
        } 
    });
});

<input name="ctl00$ContentPlaceHolder1$tbUsername" type="text" id="ctl00_ContentPlaceHolder1_tbUsername" class="username" />

وهذه الطريقة لا داعي للقلق حول معرفات كربي الناتجة عن محرك نماذج الويب.

نصائح أخرى

وفيما يلي أمثلة باستخدام مسج المساعد التحقق مع لدت WebForms و <لأ href = "http://encosia.com/2009/11/24/asp-net-webforms-validation-groups-with-jquery-validation/" يختلط = "noreferrer" > محاكاة مفهوم الجماعات التحقق من صحة معها. في الواقع يعمل بشكل جيد جدا بمجرد تذليل من القضايا الزوجين.

$("#signupForm").validate({
        rules: { 
                <%= tbUsername.UniqueID %>: {
                        required: true,
                        minlength: 2
                }, },
        messages: { 
                <%= tbUsername.UniqueID %>: {
                        required: "Please enter a username",
                        minlength: "username at least 2 characters"
                }, 
        });

<asp:TextBox ID="tbUsername" runat="server"></asp:TextBox>

ويمكنك التحقق xVal.webForms هنا: http://xvalwebforms.codeplex.com/

واختبار ما قال دارين ديميتروف وأنها تعمل تماما، ولكن إذا كنت لا ترغب في تعيين فئة معينة لكل من الحقول، يمكنك استخدام محددات مسج:

$('form').validate();
$('input[id$=Username]').rules('add', { 
    required: true, 
    messages: { 
        required: 'Some custom message for the username required field' 
    } 
});

<input name="ctl00$ContentPlaceHolder1$tbUsername" type="text" id="ctl00_ContentPlaceHolder1_tbUsername" />

والحل الأفضل هو استخدام "<٪ = tbUsername.UniqueID٪>" بدلا من tbUsername في قواعد مسج.

$("#signupForm").validate({
rules: { 
    "<%=tbUsername.UniqueID %>": {
        required: true,
        minlength: 2
    }, },
messages: { 
    "<%=tbUsername.UniqueID %>": {
        required: "Please enter a username",
        minlength: "username at least 2 characters"
    }, 
}.

وأنا في الآونة الأخيرة نشر ملف تصحيح للxVal.WebForms الذي يعمل على حل المشكلة أشكال متعددة ترحيل على المجموعة التحقق من صحة ASP.Net معروفة. هذا التصحيح كما يدعم خاصية ASP.Net CausesValidation.

وكما يمكنك قراءة حول هذا الموضوع هنا: http://cmendible.blogspot.com/

طريقة رائعة للقيام بذلك هي استخدام:

<%= مربع نص.اسم %> أو <%= مربع نص.ClientId %> كلما كنت في حاجة إلى مرجع ملقم البند.

أي

var phoneNumb = $('#<%= tPhone.ClientID %>').val(); 

أو

$("#signupForm").validate({
        rules: { 
                <%= username.Name %>: {
                        required: true,
                        minlength: 2
                }, },
        messages: { 
                <%= username.Name %>: {
                        required: "Please enter a username",
                        minlength: "username at least 2 characters"
                }, 
        }.

.......

بالنسبة SharePoint 2010 لقد وجدت مع تحميل مختلف usercontrols وجهات النظر (عن طريق ajax) أن هذا عمل إذا قمت بنقل جافا سكريبت في المكتبة و لا يمكن استخدام الخادم علامات معرف عنصر التحكم مثل هذا:

هـ.ز #<%= tPhone.ClientID %>

$('input[id$=tPhone]').rules('add', 
{      
 required: true,      
 messages: 
 {          
  required: 'Some custom message for the username required field'      
 }  
});

وبالإضافة إلى ذلك إذا كنت حيوي تحميل عنصر تحكم مستخدم عبر اياكس ثم لا يمكنك استخدام $(document).جاهزة عليك أن تغلف مسج في وظيفة المكتبة إذا كان على المستخدم التحكم في (جانب الخادم الحدث) تحميل الصفحة الجميلة ولكن في السيناريو لها تحميلها عبر اياكس مع التحديث الفريق لن الرقص.

لم أحاول التحميل usercontrols عبر مسج بعد هذا يبدو ثقيلا و يبدو أن تحميل الصفحة بأكملها وإن كان ربما أسرع قليلا أو لا.

اختبارات مقارنة تقنيات التحميل أظهر التحديث الفريق بالسرعة أسفرت عن نفسه أو أصغر أحجام الصفحات من التقنيات الأخرى وأساسا تحميل أسرع أو أكثر من ذلك بكثير البيانات بسرعة أو أسرع.

وأوصي باستخدام jQuery.simple.validator، سهلة، خفيفا وتخصيص المصادقة على متوافقة مع النماذج asp.net على شبكة الإنترنت، لأنه في الاساس ويمكن أن تؤدي عمليات التحقق في أي وعاء، وليس فقط

https://github.com/v2msoft/jquery.simple.validator

وأنصحك تحقق البرنامج المساعد والوثائق. الاستعمال:

<script type="text/javascript" src="/Content/js/jquery-plugins/jquery.simple.validator.js"></script>

<div id="container">
    <!-- REQUIRED FIELD -->
    <label>Required Field: </label><br/>
    <input type="text" id="required_field_control" data-required data-required-msg="Field is required" /><br /><br/>

    <input type="button" value="Validate" onclick='javascript:validate();' />
</div>


<script type="text/javascript">
    function validate() {
        $("#container").initialize();
        var ok = $("#container").validate();
        if (!ok)  alert("There are errors");
        else alert("Form is ok");
    }
</script

href="http://www.telerik.com/blogs/the-difference-between-id-clientid-and-uniqueid" في هذه المقالة التي تقودها لي لاستخدام Control.ClientID عندما تبحث عن المباراة مع مسج ... معلومات مفيدة جدا ...

<label for="<%= tbName.ClientID %>">Name</label>
<input id="cphBody_tbName" runat="server" .../>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top