Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.0k views
in Technique[技术] by (71.8m points)

c# - Applying css class using Html.DisplayFor inside razor view

Inside razor view I used model for rendering label like

 @Html.LabelFor(model => model.MyName, htmlAttributes: new { @class = "control-label col-md-6" })

and now I want to use it's value instead of data annotation attr. value so I tried with DisplayFor like

@Html.DisplayFor(model => model.MyName, new { @class = "control-label col-md-6" })

this css class control-label col-md-6 is not apply. Why?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

The difference is that @Html.LabelFor helper function renders a <label></label> tag, and the @Html.DisplayFor helper function does not render any html tag, instead it renders plain text. For example the following code:

@Html.DisplayFor(model => model.MyName, new { @class = "control-label col-md-6" })

returns raw text:

Martin

considering that MyName had the value "Martin". And the code:

@Html.LabelFor(model => model.MyName, htmlAttributes: new { @class = "control-label col-md-6" })

will return:

<label class="control-label col-md-6">Martin</label>

Consider the difference.

Use following (if you want to use @Html.DisplayFor):

<span class"control-label col-md-6">@Html.DisplayFor(model => model.MyName)</span>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...