views:

61

answers:

2

Hi there , what is the difference between <%: and <%= ?

+4  A: 

The difference is that <%: automatically HTML encodes the string whereas <%= does not.

Back before MVC2 came out in order to HTML encode a string you had to use the Html.Encode() method inside the view.

<%= Html.Encode(Model.MyString) %>

However with MVC2 they added the <%: tag, which outputs the same thing but handles the HTML encoding for you.

<%: Model.MyString %>

As a rule of thumb you should always output your strings using the <%: tag, unless you have a good reason not to.

Checkout Scott Gu's blog for more information on the subject.

With ASP.NET 4 we are introducing a new code expression syntax (<%: %>) that renders output like <%= %> blocks do – but which also automatically HTML encodes it before doing so. This eliminates the need to explicitly HTML encode content...

Fara
+3  A: 

Essentially, the <%: tag encodes any strings that haven't already been encoded. So:

<%: Model.Title %>

... is the same as:

<%= Server.HtmlEncode(Model.Title ) %>

But if you accidentally use the tag where it wasn't necessary:

<%: Html.TextBoxFor(Model => Model.Title) %>

... it will be the same as if you hadn't:

<%= Html.TextBoxFor(Model => Model.Title) %>

See http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2.aspx for a full explanation.

StriplingWarrior