आप सही हैं, यह मॉडल काम पर बाध्यकारी है।
बंधन लगभग स्वचालित रूप से जब आप इस तरह के रूप HtmlHelpers का उपयोग होता है:
@Html.TextboxFor(model => model.PropertyName)
इस लाइन वास्तव में इस तरह एक छोटा सा कुछ बनाता है:
<input type="textbox" id="Modelobject_PropertyName" name="ModelObject.PropertyName" />
फिर
जब तुम, DefaultModelBinder
अपने प्रपत्र सबमिट पोस्ट मूल्य को deserialize करने और दिए गए प्रकार के निर्माण और वस्तु (कम से कम यह कोशिश करेगा), अगर यह एक संबंधित प्रविष्टि नहीं मिल सकता है, तो संपत्ति शून्य हो जाएगी और यदि किसी प्रविष्टि की कोई संबंधित संपत्ति नहीं है, तो यह होगा अनदेखा (जब तक यो आपके पास अन्य पैरामीटर हैं)।
आप इसे article पढ़ सकते हैं, यह थोड़ा सा पुराना है, लेकिन यह अभी भी काफी सटीक है।
एक उदाहरण के रूप में:
मान लीजिए कि आप एक साधारण वस्तु है दो:
public class IndexModel
{
public string MyProperty { get; set; }
public bool MyCheckbox { get; set; }
}
एक साधारण controler:
public class TestingController : Controller
{
[OutputCache(Duration=0, NoStore = true)]
public ActionResult Index()
{
return View(new IndexModel { MyProperty = "hi" });
}
[HttpPost]
[OutputCache(Duration=0, NoStore = true)]
public ActionResult Index(IndexModel model)
{
model.MyProperty += "!";
ModelState.Clear();
return View(model);
}
}
और एक साधारण दृश्य:
@model MvcApp.Models.IndexModel
@using (Html.BeginForm())
{
<div>
@Html.LabelFor(model => model.MyProperty)<p />
@Html.TextBoxFor(model => model.MyProperty)
</div>
<div>
@Html.LabelFor(model => model.MyCheckbox)<p />
@Html.CheckBoxFor(model => model.MyCheckbox)
</div>
<input type="submit" />
}
आप देखेंगे, जब वाई कहां फॉर्म जमा करें, कि मॉडल पूरी तरह से बनाया गया है।
आप एक संपत्ति के वास्तविक मूल्य को प्रदर्शित नहीं करना चाहते हैं, लेकिन अभी भी जरूरत है यह कायम:
@Html.HiddenFor(model => model.MyProperty)
यह एक छिपी हुई फ़ील्ड कि वापस तैनात किया जाएगा पैदा करते हैं और करेंगे, वजह, बनी रही।
हैप्पी कोडिंग!
हाय लॉस्टड्रीमर, एक सबसे व्यापक और सहायक उत्तर। मैं इस बात से सहमत हूं कि मुझे जिस तरह से जाना है और पाब्लो राज्यों में मेरी पिछली टिप्पणी है। मैं दोनों उत्तरों को चिह्नित करना चाहता हूं समान रूप से उपयोगी हैं। यकीन नहीं है कि मैं यह कर सकता हूँ। गले फिर से धन्यवाद। ईडी – EdB