Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

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

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

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>
}
See Question&Answers more detail:os

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

1 Reply

0 votes
by (71.8m points)
@Html.Raw(HttpUtility.HtmlDecode(Html.ValidationMessageFor(m => m.Email).ToHtmlString()))

Isn't pretty though


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...