How can I render html in validation message in ASP.NET MVC?

asp.net-mvc, c#, razor

Solution

@Html.Raw(HttpUtility.HtmlDecode(Html.ValidationMessageFor(m => m.Email).ToHtmlString()))

Isn't pretty though

Problem

I am currently developing a registration page. When user already exists I want to provide login and reset password links for user in error message for email field. In controller I have: ``` [HttpPost] public ActionResult Register(RegistrationModel registration) { ... if(userExists) { const string errorMessage = "User already exist. You can <a href="/account/login">login</a> ..."; ModelState.AddModelError("Email", errorMessage); return View("Register", registration); } } ``` But when I try to output this message in view I do not get what I expect. I get html markup like plain text. I've already tried: ``` @using(Html.BeginForm()) { <div>@Html.TextBoxFor(m => m.Email) @{ @Html.ValidationMessageFor(m => m.Email) ... @Html.Raw(Html.ValidationMessageFor(m => m.Email)) ... string validationMessage = Html.ValidationMessageFor(m => m.Email).ToString(); @Html.Raw(validationMessage) ... string validationMessage = Html.ValidationMessageFor(m => m.Email).ToHtmlString(); @Html.Raw(validationMessage) ... string validationMessage = Html.ValidationMessageFor(m => m.Email).ToString(); @(new HtmlString(validationMessage)) ... string validationMessage = Html.ValidationMessageFor(m => m.Email).ToHtmlString(); @(new HtmlString(validationMessage)) ... string validationMessage = Html.ValidationMessageFor(m => m.Email).ToString(); @(new MvcHtmlString(validationMessage)) ... string validationMessage = Html.ValidationMessageFor(m => m.Email).ToHtmlString(); @(new MvcHtmlString(validationMessage)) } </div> } ```

Original source