الشرح البيانات MVC - الميدان المطلوبة لا تعمل
-
06-07-2019 - |
سؤال
ومرحبا لدي سمك القد التالية في جميع أنحاء بلدي التطبيق ولكن مع اثنين فقط من الحقول انها لا تعمل.
[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
في المشروع. انظر هذا البرنامج التعليمي للحصول على مزيد من التفاصيل.