क्या अंतर है @Html.Label()
, @Html.LabelFor()
और @Html.LabelForModel()
तरीके?
क्या अंतर है @Html.Label()
, @Html.LabelFor()
और @Html.LabelForModel()
तरीके?
जवाबों:
Html.Label
आपको एक इनपुट के लिए एक लेबल देता है जिसका नाम निर्दिष्ट इनपुट पाठ से मेल खाता है (अधिक विशेष रूप से, स्ट्रिंग अभिव्यक्ति से मेल खाते मॉडल गुण के लिए):
// Model
public string Test { get; set; }
// View
@Html.Label("Test")
// Output
<label for="Test">Test</label>
Html.LabelFor
आपको प्रदान की गई अभिव्यक्ति (आमतौर पर एक मॉडल संपत्ति) द्वारा प्रस्तुत संपत्ति के लिए एक लेबल देता है:
// Model
public class MyModel
{
[DisplayName("A property")]
public string Test { get; set; }
}
// View
@model MyModel
@Html.LabelFor(m => m.Test)
// Output
<label for="Test">A property</label>
Html.LabelForModel
थोड़ा मुश्किल है। यह एक लेबल देता है जिसका for
मान मॉडल ऑब्जेक्ट द्वारा दर्शाए गए पैरामीटर का होता है। यह विशेष रूप से, कस्टम संपादक टेम्प्लेट के लिए उपयोगी है। उदाहरण के लिए:
// Model
public class MyModel
{
[DisplayName("A property")]
public string Test { get; set; }
}
// Main view
@Html.EditorFor(m => m.Test)
// Inside editor template
@Html.LabelForModel()
// Output
<label for="Test">A property</label>
@Html.EditorFor(m => Test)
या @Html.EditorFor(m => m.Test)
?
Html.Label
- बस जो भी कंस्ट्रक्टर में स्ट्रिंग पारित हो गया है, उसके साथ एक लेबल टैग बनाता है
Html.LabelFor
- उस विशिष्ट संपत्ति के लिए एक लेबल बनाता है। यह दृढ़ता से टाइप किया गया है। डिफ़ॉल्ट रूप से, यह सिर्फ संपत्ति का नाम करेगा (नीचे के उदाहरण में, यह MyProperty को आउटपुट करेगा यदि वह प्रदर्शन विशेषता नहीं थी)। इसका एक और लाभ यह है कि आप अपने मॉडल में डिस्प्ले प्रॉपर्टी सेट कर सकते हैं और यही यहाँ रखा जाएगा:
public class MyModel
{
[Display(Name="My property title")
public class MyProperty{get;set;}
}
आपके विचार में:
Html.LabelFor(x => x.MyProperty) //Outputs My property title
ऊपर में, LabelFor प्रदर्शित करेगा <label for="MyProperty">My property title</label>
। यह अच्छी तरह से काम करता है इसलिए आप एक जगह परिभाषित कर सकते हैं कि उस संपत्ति के लिए लेबल क्या होगा और यह हर जगह दिखाई देगा।
LabelForModel
है - मेरा उत्तर देखें।
मुझे लगता है कि इसके उपयोग को @Html.LabelForModel()
और अधिक विस्तार से समझाया जाना चाहिए।
लेबलफ़ोरमॉडल विधि एक HTML लेबल तत्व और मॉडल द्वारा प्रस्तुत की गई संपत्ति का गुण नाम लौटाती है।
आप निम्नलिखित कोड का उल्लेख कर सकते हैं:
मॉडल में कोड:
using System.ComponentModel;
[DisplayName("MyModel")]
public class MyModel
{
[DisplayName("A property")]
public string Test { get; set; }
}
देखने में कोड:
@Html.LabelForModel()
<div class="form-group">
@Html.LabelFor(model => model.Test, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Test)
@Html.ValidationMessageFor(model => model.Test)
</div>
</div>
आउटपुट स्क्रीनशॉट:
मान लें कि आपको पाठ कस्टमाइज़नाम के साथ एक लेबल की आवश्यकता है, जिससे आप इसे 2 तरीकों का उपयोग करके प्राप्त कर सकते हैं
[1]@Html.Label("CustomerName")
[2]@Html.LabelFor(a => a.CustomerName) //strongly typed
2 विधि ने आपके मॉडल से एक संपत्ति का उपयोग किया। यदि आपका दृष्टिकोण किसी मॉडल को लागू करता है तो आप दूसरी विधि का उपयोग कर सकते हैं।
अधिक जानकारी कृपया नीचे दिए गए लिंक पर जाएँ
http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx