Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the difference between Html.Label, Html.LabelFor and Html.LabelForModel

What's the difference between @Html.Label(), @Html.LabelFor() and @Html.LabelForModel() methods?

like image 420
Fabricio Avatar asked May 02 '13 19:05

Fabricio


People also ask

What is HTML LabelFor?

LabelFor() The Html. LabelFor<TModel,TProperty>() helper method is a strongly typed extension method. It generates a html label element for the model object property specified using a lambda expression.

What is HTML EditorFor in MVC?

ASP.NET MVC includes the method that generates HTML input elements based on the datatype. The Html. Editor() or Html. EditorFor() extension methods generate HTML elements based on the data type of the model object's property.

What are HTML helpers in MVC?

In MVC, HTML Helper can be considered as a method that returns you a string. This string can describe the specific type of detail of your requirement. Example: We can utilize the HTML Helpers to perform standard HTML tags, for example HTML<input>, and any <img> tags.

How do I use CheckBoxFor in HTML?

CheckBoxFor(m => m. SomeBooleanProperty, new { @checked = "checked" }); The first parameter must identify a boolean property within your model (it's an Expression not an anonymous method returning a value) and second property defines any additional HTML element attributes.


2 Answers

Html.Label gives you a label for an input whose name matches the specified input text (more specifically, for the model property matching the string expression):

// Model public string Test { get; set; }  // View @Html.Label("Test")  // Output <label for="Test">Test</label> 

Html.LabelFor gives you a label for the property represented by the provided expression (typically a model property):

// 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 is a bit trickier. It returns a label whose for value is that of the parameter represented by the model object. This is useful, in particular, for custom editor templates. For example:

// 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> 
like image 74
Ant P Avatar answered Sep 24 '22 22:09

Ant P


Html.Label - Just creates a label tag with whatever the string passed into the constructor is

Html.LabelFor - Creates a label for that specific property. This is strongly typed. By default, this will just do the name of the property (in the below example, it'll output MyProperty if that Display attribute wasn't there). Another benefit of this is you can set the display property in your model and that's what will be put here:

public class MyModel {     [Display(Name="My property title")     public class MyProperty{get;set;} } 

In your view:

Html.LabelFor(x => x.MyProperty) //Outputs My property title 

In the above, LabelFor will display <label for="MyProperty">My property title</label>. This works nicely so you can define in one place what the label for that property will be and have it show everywhere.

like image 31
CorrugatedAir Avatar answered Sep 25 '22 22:09

CorrugatedAir