Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP MVC Razor encode special characters in input placeholder

Tags:

This is my code:

Model:

[Required] [DataType(DataType.Text)] [Display(Name = "Your company's name")] public string CompanyName { get; set; } 

View:

@Html.TextBoxFor(m => m.CompanyName, new { @class = "account-input", @placeholder = @Html.DisplayNameFor(m => m.CompanyName), @id = "companyname" }) 

It will be rendered like this:

Your company's name

html output:

<input class="account-input" data-val="true" data-val-required="The Your company's name field is required." id="companyname" name="CompanyName" placeholder="Your company&amp;#39;s name" type="text" value=""> 

It should be look like this:

Your company's name

Why is the text does not render correctly and how can I prevent this?

I already tried this:

@Html.TextBoxFor(m => m.CompanyName, new { @class = "account-input", @placeholder = @Html.Raw(@Html.DisplayNameFor(m => m.CompanyName)), @id = "companyname" }) 

and this

@Html.TextBoxFor(m => m.CompanyName, new { @class = "account-input", @placeholder = @Html.Encode(@Html.DisplayNameFor(m => m.CompanyName)), @id = "companyname" }) 
like image 813
Sebastian Avatar asked Mar 06 '13 11:03

Sebastian


1 Answers

I think this post will help you:

HTML encode decode c# MVC4

I think there are other ways to get this behaviour, but this is one option of using the TextBox:

@Html.TextBox("CompanyName", HttpUtility.HtmlEncode("Your company&#39;s name")) 

There is also HttpUtility.HtmlDecode, which might help with our save action.

update

if you wrap HttpUtility.HtmlDecode around your place holder:

@Html.TextBoxFor(m => m.CompanyName, new { @class = "account-input",  @placeholder = HttpUtility.HtmlDecode(Html.DisplayNameFor(x => x.CompanyName).ToHtmlString()),  @id = "companyname" }) 

the placeholder returns as: placeholder="Your company's name"

like image 81
Luke Duddridge Avatar answered Sep 17 '22 01:09

Luke Duddridge