के बजाय DropDownListFor में व्यूबैग संपत्ति मूल्य ड्रॉपडाउन लिस्टफ़ोर (एएसपी.नेट एमवीसी 3 रिलीज) में हमें अजीब व्यवहार मिला। यह ड्रॉपडाउन में मॉडल प्रॉपर्टी वैल्यू के बजाय व्यूबैग प्रॉपर्टी वैल्यू का चयन करता है।मॉडल संपत्ति मूल्य
मॉडल:
public class Country {
public string Name { get; set; }
}
public class User {
public Country Country { get; set; }
}
नियंत्रक सूचकांक कार्रवाई:
ViewBag.CountryList = new List<Country> { /* Dropdown collection */
new Country() { Name = "Danmark" },
new Country() { Name = "Russia" } };
var user = new User();
user.Country = new Country(){Name = "Russia"}; /* User value */
ViewBag.Country = new Country() { Name = "Danmark" }; /* It affects user */
return View(user);
दृश्य:
@Html.EditorFor(user => user.Country.Name)
@Html.DropDownListFor(user => user.Country.Name,
new SelectList(ViewBag.CountryList, "Name", "Name", Model.Country), "...")
यह साथ "Danmark" मूल्य "रूस" मूल्य और ड्रॉप डाउन से पाठ बॉक्स में दिखाई देंगे "रूस" के बजाय चुना गया।
मुझे इस व्यवहार के बारे में कोई दस्तावेज नहीं मिला। क्या यह व्यवहार सामान्य है? और यह सामान्य क्यों है? क्योंकि व्यूबैग और मॉडल गुणों के नामों को नियंत्रित करना बहुत मुश्किल है।
ViewBag.Country = new Country() { Name = "Danmark" }; /* It affects user */
है ऐसा इसलिए है क्योंकि एचटीएमएल सहायकों कुछ विभिन्न स्थानों पर गौर उत्पन्न नियंत्रण के लिए मूल्यों को लेने के लिए:
This sample MVC3 project sources
क्या आप हमेशा नामकरण से बचने के लिए व्यूबैग संपत्ति नाम के उपसर्ग का सुझाव देते हैं? पूर्व। ViewBag.ViewBag_Country –
पवित्र बकवास, आप सही हैं। इसके लिए धन्यवाद ... मेरे दिन बचाया ... :) – dizzwave