سؤال

لا يمكنني الحصول على أي التحقق من صحة جانب العميل يعمل على تطبيق MVC 2 RC.

النموذج الخاص بي لديه ما يلي:

public class ExampleModel
{
    [Required(ErrorMessage="Test1 is required")]
    [DisplayName("Test1")]
    public string Test1 { get; set; }

    [Required(ErrorMessage="Test2 is required")]
    [DisplayName("Test2")]
    public string Test2 { get; set; }
}

عرضي يحتوي على الرمز التالي:

<% Html.EnableClientValidation(); %>
<%= Html.ValidationSummary(true, "Test was unsuccessful.") %>    
<% using (Html.BeginForm()) { %>
<div>
    <div class="editor-label">Test1:</div>
    <div class="editor-field">
        <%= Html.TextBoxFor(m => m.Test1) %>
        <%= Html.ValidationMessageFor(m => m.Test1) %>
    </div>

    <div class="editor-label">Test2:</div>
    <div class="editor-field">
        <%= Html.TextBoxFor(m => m.Test2) %>
        <%= Html.ValidationMessageFor(m => m.Test2) %>
    </div>

    <p>
        <input type="submit" value="Test" />
    </p>
</div>

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

لديّ JavaScript التالية أيضًا في العرض (لست متأكدًا مما إذا كنت بحاجة إلى كل شيء):

<link href="../../Scripts/jquery-1.3.2.min.js" type="text/javascript" />
<link href="../../Scripts/jquery.validate.min.js" type="text/javascript" />    
<link href="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript" /> 

أي أفكار ما أفعله خطأ. أشعر أنني أفتقد شيئًا بسيطًا وأن الوثائق لـ MVC 2 متناثرة.

تعديل: لقد أضفت الرابط:

<link href="../../Scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript" />

وقد قمت بتضمين الملف في مشروعي الذي كان علي تنزيله من الروابط في الإجابات. لا يزال لا يعمل على الإطلاق. أي أفكار أخرى؟

تعديل: أنا أستخدم Visual Studio 2008 مع MVC 2 RC (ليس بيتا) وأنا أبحث عن أي أمثلة قابلة للتنزيل أو تم نشرها على التحقق من صحة من جانب العميل مع إصدار RC.

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

المحلول 2

حسنًا ، لقد اكتشفت هذا ... وهو خطأي 100 ٪. على الرغم من أن اثنين من المنشورات شملت بعض المعلومات التي كنت بحاجة إليها أيضًا.

كانت المشكلة الرئيسية ، التي لم ألاحظها أحد ، هي HTML لتضمين البرامج النصية ... ابحث عن رسالتي ومعرفة ما إذا كان يمكنك رؤية المشكلة.

كنت أستخدم أ <link href=... علامة بدلا من الصحيح <script src=... بطاقة شعار. خطأي تمامًا لأنني قمت بقطع وصلى رابط CSS بسرعة دون التفكير وتغيير النوع والملف. دوه !!!

على أي حال ، الروابط الصحيحة المطلوبة هي:

<script src="/Scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript"></script>

كل شيء يعمل بعد ذلك. أنت بالتأكيد بحاجة إلى تضمين ملف "MicrosoftMvcJquererValidation.js" من مشروع العقود الآجلة ، لذا فقد قمت بتثبيت جميع المنشورات التي ذكرت ذلك.

خارج المربع على الرغم من عدم تضمين هذا الملف. إذا لم تكن قلقًا بشأن استخدام jQuery ، فيمكنك فقط استخدام ما يلي ، يتضمن استخدام تطبيق Microsoft الذي سيعمل خارج المربع مع RC:

<script src="/Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>    

آمل أن أتمكن من إنقاذ شخص واحد على الأقل بعض الحزن ... ما زلت لا أستطيع أن أصدق كيف كان بإمكاني تشمل التضمين ولم ألاحظه لفترة طويلة.

شكرا مرة أخرى على مساعدتك.

نصائح أخرى

عند تحديث المشروع من MVC 2 Beta ، استخدم: /src/MvcFutures/MicrosoftMvcJQueryValidation.js من حزمة رمز مصدر MVC 2 RC (حلقة الوصل). إصدار بيتا الأقدم لا يعمل بشكل صحيح مع jQuery.validation في RC. ملفات javaScript اللازمة:

<script src="/Scripts/jquery-1.3.2.min.js" type="text/javascript" />
<script src="/Scripts/jquery.validate.min-vsdoc.js" type="text/javascript" />
<script src="/Scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript" />

الإصدار الصحيح من microsoftmvcjqueryvalidation.js يحتوي على هذا $ (وثيقة). ready () وظيفة:

// need to wait for the document to signal that it is ready
$(document).ready(function() {
    var allFormOptions = window.mvcClientValidationMetadata;
    if (allFormOptions) {
        while (allFormOptions.length > 0) {
            var thisFormOptions = allFormOptions.pop();
            __MVC_EnableClientValidation(thisFormOptions);
        }
    }
});

في نهاية الملف (في إصدار RC).

عليك أن تضم MicrosoftMvcJqueryValidation.js ملف :

<link href="MicrosoftMvcJQueryValidation.js" type="text/javascript" />

افحص هذا: أين هو الإصدار الصحيح من MicrosoftMvcJqueryValidation.js لـ MVC 2 Beta 2؟

التالي فقط وضع Html.EnableClientValidation(); في مكان ما في صفحة العرض. هو - هي يجب تكون قبل النموذج الأول الذي تريد التحقق من صحة جانب العميل. أنا أفضل site.master صفحة.

العمل على ASP.NET MVC 2 RC.

هل أنت متأكد من أنك قمت بتضمين ملفات JS الصحيحة؟ لأنه في منشور فيل هاك لديها MicrosoftMvcJQueryValidation.js إرفاق بدلا من MicrosoftMvcValidation.js.

كما يضع ClientValidationFunction الخاصية في العرض:

<% ViewContext.FormContext.ClientValidationFunction 
= "EnableClientValidation"; %>

على الرغم من أن هذا لم يكن RC ، ولكن بيتا.

لا يستخدم نظام التحقق الافتراضي (ويدعمه فقط بواسطة Microsoft) في مرشح إصدار ASP.NET MVC 2 التحقق من صحة JQuery. بدلاً من ذلك ، يستخدم نظام التحقق الجديد الموجود بالكامل في MicrosoftMvCvalidation.js (على الرغم من أنك تحتاج أيضًا إلى تضمين microsoftajax.js).

إذا كنت ترغب في استخدام مكتبة التحقق من صحة JQuery ، يتم تضمينها كجزء من مشروع ASP.NET MVC Futures (متاح هنا) ، وهو تنزيل منفصل ، وله ملف نص محول خاص به.

أيضا ، بخصوص Html.ValidationSummary() المساعد ، أعتقد أنه يجب تضمينه داخل النموذج إذا كنت تريد أن يكون لها وظيفة جديدة من جانب العميل. سيظل يعمل إذا كان خارج النموذج ، لكنه سيعمل فقط من جانب الخادم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top