This Question समान है लेकिन स्वीकार्य उत्तर इसे सर्वर पक्ष हल करता है, मुझे क्लाइंट साइड समाधान में दिलचस्पी है।DropDownListFor Unobtrusive प्रमाणीकरण आवश्यक गुणों को प्राप्त नहीं किया
इस ViewModel
public class MyViewModel
{
public string ID { get; set; }
[Required(ErrorMessage = "I DEMAND YOU MAKE A CHOICE!")]
[Display(Name = "Some Choice")]
public int SomeChoice{ get; set; }
[Required(ErrorMessage = "I DEMAND YOU MAKE A CHOICE!")]
[Display(Name = "Keyword")]
public string Keyword { get; set; }
}
और उस्तरा
<div>
@Html.LabelFor(model => model.SomeChoice, new { @class = "label" })
@Html.DropDownListFor(model => model.SomeChoice, (SelectList)ViewBag.SomeChoice, "Select...")
@Html.ValidationMessageFor(model => model.SomeChoice)
</div>
को देखते हुए और मान लेते हैं ViewBag.SomeChoice विकल्पों
के एक चयनित सूची शामिल है प्रदान की गई एचटीएमएल डेटा-वैल नहीं मिलता है = "सत्य" डेटा-वैल-आवश्यक = "मुझे लगता है कि आप एक विकल्प बनाते हैं!" इसमें विशेषताएं @ Html.EditorFor (model => model.Keyword) या @ Html.TextBoxFor प्रस्तुत करेंगे।
क्यों?
एक वर्ग = तो
@Html.DropDownListFor(model => model.SomeChoice, (SelectList)ViewBag.SomeChoice, "Select...", new { @class = "required" })
जो प्रस्तुत पर jQuery मान्यकरण वर्ग अर्थ विज्ञान और ब्लॉक का उपयोग करता है, लेकिन संदेश प्रदर्शित नहीं करता है जैसे कि यह करने के लिए "आवश्यक" जोड़ना। मैं
@Html.DropDownListFor(model => model.SomeChoice, (SelectList)ViewBag.SomeChoice, "Select...", new Dictionary<string, object> { { "data-val", "true" }, { "data-val-required", "I DEMAND YOU MAKE A CHOICE!" } })
कौन सा सही डाल देंगे वहाँ गुण, और ब्लॉक प्रस्तुत पर और संदेश से पता चलता है लेकिन मेरे ViewModel
पर RequiredAttribute त्रुटिसंदेश का लाभ मेरे पास है नहीं ले करता है बात इस तरह का कर सकते हैं तो क्या किसी ने ड्रॉपडाउनलिस्ट लिखा है जो सत्यापन के संबंध में अन्य एचटीएमएल हेल्पर की तरह व्यवहार करता है?
संपादित यहाँ मेरी सटीक कोड
HomeController.cs
public class MyViewModel
{
[Required(ErrorMessage = "I DEMAND YOU MAKE A CHOICE!")]
[Display(Name = "Some Choice")]
public int? SomeChoice { get; set; }
}
public ActionResult About()
{
var items = new[] { new SelectListItem { Text = "A", Value = "1" }, new SelectListItem { Text = "B", Value = "2" }, new SelectListItem { Text = "C", Value = "3" }, };
ViewBag.SomeChoice = new SelectList(items,"Value", "Text");
ViewData.Model = new MyViewModel {};
return View();
}
में
@using Arc.Portal.Web.Host.Controllers
@model MyViewModel
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
@using (Html.BeginForm())
{
<div>
@Html.LabelFor(model => model.SomeChoice)
@Html.DropDownListFor(model => model.SomeChoice, (SelectList)ViewBag.SomeChoice, "Select...")
@Html.ValidationMessageFor(model => model.SomeChoice)
</div>
<button type="submit">OK</button>
}
यहाँ है About.cshtml
और गाया कोड हैयह वापस मेरी नियंत्रक पर भी पोस्ट कर ... ऐसा नहीं करना चाहिए
मैंने int को शून्य बना दिया और यह अभी भी नियंत्रण में डेटा सत्यापन तत्वों को लिखने में विफल रहता है – Peter