Html.Label, Html.LabelFor और Html.LabelForModel में क्या अंतर है


86

क्या अंतर है @Html.Label(), @Html.LabelFor()और @Html.LabelForModel()तरीके?


नाम में इसके सभी। एक सामान्य लेबल के लिए है, एक विशिष्ट मॉडल संपत्ति लेबल के लिए है, और एक सामान्य मॉडल लेबल के लिए है।
फ्रांसिस्को अफोंसो

6
@FranciscoAfonso जो वास्तव में व्याख्या नहीं करता है कि वे वास्तव में क्या करते हैं, हालांकि।
चींटी पी

जवाबों:


110

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)?
फैब्रिकियो

12

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है - मेरा उत्तर देखें।
एंट पी

6

मुझे लगता है कि इसके उपयोग को @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>

आउटपुट स्क्रीनशॉट:

यहाँ छवि विवरण दर्ज करें

Asp.net फोरम पर जवाब देने के लिए संदर्भ


4

मान लें कि आपको पाठ कस्टमाइज़नाम के साथ एक लेबल की आवश्यकता है, जिससे आप इसे 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


Html.LabelForModel के बारे में क्या?
फैब्रिकियो

एक स्ट्रिंग के साथ एक लेबल देता है जो मॉडल का प्रतिनिधित्व करता है, जैसे वे सब करते हैं कि उनका नाम क्या कहता है ...
फ्रांसिस्को अफोंसो

क्षमा करें, मैंने कभी भी @ html.LableForModel नहीं देखा और इस्तेमाल किया :)
महेश चित्रोदा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.