gurrawar
gurrawar

Reputation: 363

Html.Label to display email address

I am using Html.Label to display some data in my MVC applilcation. When I am trying to display email address it does not render properly

Model.CopyToEmail = [email protected]
@Html.Label((string)(Model.CopyToEmail))

but the rendered output that i see is

com

Could anyone please suggest how to display using Html.Label

[email protected] 

Upvotes: 6

Views: 12957

Answers (3)

SLaks
SLaks

Reputation: 887777

Html.Label takes a field to display a <label> tag for.
It's reading your string as a nested property, and printing the name of the innermost property.

You just want to write ordinary text:

@Model.CopyToEmail

You can also call @Html.DisplayFor(m => m.CopyToEmail).

Upvotes: 13

CodeMad
CodeMad

Reputation: 948

Can you please look at the model OR your data source to the view to return the property value: i.e. like, Html.Encode(Model.Email)

Upvotes: 1

archil
archil

Reputation: 39501

Using strongly typed views (passing viewmodels to views, and not using ViewBag/ViewData) is good practice, and allows you to use generic overloads of html helpers. Here is your example rewritten using strongly typed html helper

Html.LabelFor(model => model.CopyToEmail)

And label in html is not there to display data, it is there to label property being edited. You could use [DisplayAttribute] on your property, or use this overload

public static MvcHtmlString Label(
    this HtmlHelper html,
    string expression,
    string labelText
)

//

Html.LabelFor(model => model.CopyToEmail, Model.CopyToEmailLabelText)

Upvotes: 1

Related Questions