سؤال

أنا استخدم xval لاستخدام التحقق من جانب العميل في تطبيق الويب الخاص بـ ASP.NET MVC2. على الرغم من الأخطاء التي تعطيها عند إدخال النص في حقل رقمي ، إلا أنه لا يزال يحاول نشر النموذج إلى قاعدة البيانات. يتم استبدال القيم غير الصحيحة بـ 0 وحفظها في قاعدة البيانات. ولكن بدلاً من ذلك ، لا ينبغي أن يكون من الممكن محاولة إرسال النموذج. هل يمكن لأي شخص مساعدتي هنا؟

لقد قمت بتعيين السمات على النحو التالي:

[Property]
[ShowColumnInCrud(true, label = "FromPriceInCents")]
[Required]
//[Range(1, Int32.MaxValue)]
public virtual Int32 FromPriceInCents{ get; set; }

وحدة التحكم التي تصطاد الطلب تبدو أدناه ؛ أنا لا أحصل على أخطاء في هذا الجزء.

[AcceptVerbs(HttpVerbs.Post)]
[Transaction]
[ValidateInput(false)]
public override ActionResult Create()
{
  //some foo happens
}

وجهة نظري تبدو أدناه:

<div class="label"><label for="Price">FromPrice</label></div>
<div class="field">
<%= Html.TextBox("FromPriceInCents")%>
<%= Html.ValidationMessage("product.FromPriceInCents")%></div>

وفي نهاية العرض ، لدي القاعدة التالية التي تنشئ في كود HTML قواعد التحقق الصحيحة

<%= Html.ClientSideValidation<Product>("Product") %>

آمل أن يساعدني شخص ما في هذا القضية ، شكرًا مقدمًا!

تحرير: 19 أبريل ، اكتشفت للتو أن هناك زرًا عاديًا مع استخدامه بدلاً من نوع الإدخال = "زر" هل يمكن أن يكون هذا هو المشكلة؟

<button class="save" type="submit" name="save"><span>Opslaan</span></button>

نصائح أخرى

شاغلي الأول والرئيس هنا سيكون: لماذا ينقذ تطبيقك القيم في قاعدة البيانات في المقام الأول؟ على الرغم من أن XVAL هو وسيلة جيدة لجعل التطبيق سهل الاستخدام ، إلا أنه لا يزال يتعين عليك القيام بالتحقق من صحة من جانب الخادم. إذا لم تقم بالتحقق من صحة بياناتك على الخادم - لديك ثقب أمان ماسف! حاول التحقق مما إذا كان نموذج modelState.isvalid في وحدة التحكم الخاصة بك قبل حفظ القيم.

الآن ، مما أراه تقوم بتسجيل التحقق من XVAL باستخدام

<%= Html.ClientSideValidation<Product>("Product") %>

الطريقة التي يعمل بها هي أنه يتيح التحقق من جانب العميل لجميع عناصر التحكم المسبقة بـ "المنتج". مربع النص الخاص بك من ناحية أخرى لديه معرف من من PRICESINCES

لذا فإن الحل هنا هو القيام بذلك:

<%= Html.TextBox("FromPriceInCents")%>
<%= Html.ValidationMessage("FromPriceInCents")%>

<%= Html.ClientSideValidation<Product>() %>

UPD3لقد قمت بتحديث المنشور. إصلاح الرمز بحيث لا يتم استخدام البادئة.

أيضا ، قمت بتجميع حل العمل الذي يحتوي على حل العمل. قائمة وتحرير وإنشاء صفحة وسلسلة وخصائص int والتحقق من صحة XVAL.

public class Product
{
    [ScaffoldColumn(false)]
    public int Id { get; set; }

    [Required]
    [Range(1,50)]
    public int PriceInCents { get; set; }

    [Required]
    [StringLength(50)]
    public string Name { get; set; }
}

وعلى المنظر

<%= Html.TextBoxFor(model => model.PriceInCents) %>
<%= Html.ValidationMessageFor(model => model.PriceInCents) %>

إليك رابط التنزيل .. تحقق من ذلك وأخبرني إذا كان يعملhttp://www.flexlabs.org/download/xvaltest

لماذا لديك سمة النطاق علقت؟ مع الخصائص التي حددتها طالما تم إدخال أي شيء في مربع النص ، يجب أن يمرر التحقق من صحة من جانب العميل.

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