سؤال

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

[Required]        
public string DevelopmentPM { get; set; }

وويعمل الاختبار التالي ويمر:

    [TestMethod]
    public void SiteConstruction_MODEL_DevelopmentPM_Is_Required()
    {
        //arrange
        var propertyInfo = typeof(SiteConstructionMetadata).GetProperty    
                           ("DevelopmentPM");

        //act
        var attribute = propertyInfo.GetCustomAttributes(typeof(RequiredAttribute), 
                        true).Cast<RequiredAttribute>().FirstOrDefault();

        //assert
        Assert.IsNotNull(attribute);
    }

وبلدي controlller يشبه:

        TryUpdateModel(siteConstruction);

        if (!ModelState.IsValid)
           return View(siteConstruction);

ولدي الحقول المطلوبة في نموذج وانهم جميعا بخير. هذا الحقل فارغة (راجعت)، ولكن لا تجعل من النموذج غير صالحة - حتى لا التحقق من صحة وخطأ على حفظ

وجهة نظري

    <li>
        <label for="DevelopmentPM">
            <strong>Development PM:</strong></label>
        <%= Html.TextBox("DevelopmentPM") %>
        <%= Html.ValidationMessage("DevelopmentPM", "*") %>
    </li>

ولقد بحثت في بلدي .dbml (LINQ إلى SQL) والهجاء يبدو على ما يرام.

وأنا أنا في عداد المفقودين شيء بسيط - من فضلك، بالجنون

والشكر

وديفي

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

المحلول

[MetadataType (تشير typeof (SiteConstructionMetadata))] أعلاه صفي جزئية، أخذت أمرا مفروغا منه كان لي هناك.

وفي المرة القادمة، بدلا من نشر قصاصات، وأعتقد أنني سوف الرد على كل شيء - wous smeone اكتشفوا أن بسرعة كبيرة

.

وديفي

نصائح أخرى

تأكد من إجراء DataAnnotationsModelBinder نموذج الموثق الافتراضي أيضا. إضافة ما يلي في Global.asax.cs الخاص بك:

ModelBinders.Binders.DefaultBinder = new Microsoft.Web.Mvc.DataAnnotations.DataAnnotationsModelBinder();

وتأكد من أن لديك المشار إليها الجمعية System.ComponentModel.DataAnnotations.dll في المشروع. انظر هذا البرنامج التعليمي للحصول على مزيد من التفاصيل.

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