我怎样才能呈现验证消息的HTML ASP.NET MVC?(How can I render htm

2019-07-20 07:26发布

我目前正在开发一个注册页面。 当用户已经存在我想提供登录名和密码重置链接,用户在错误信息的电子邮件领域。 在控制我有:

[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);
  }
}

但是,当我试图输出这个消息,鉴于我没有得到我的期望。 我得到的HTML标记像纯文本。 我已经尝试过

@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>
}

Answer 1:

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

不漂亮,虽然



Answer 2:

同时使用ASP.NET核心弄清这一点我发现这个职位。

我落得这样做将在modelstate.AddError()我的我的验证消息的一部分,并分别增加了ViewData的是曾在HTML我想渲染,像这样有点什么:

计算机[ “的myKey”] = “我的HTML”;

感觉很丑,可能有这样做的更好的办法,但对我很有限的需求,这很好地适应该法案。



Answer 3:

阅读此篇为评估错误

如何添加在验证集合asp.net的MVC验证错误?

在您的视图

Html.ValidationMessage( “电子邮件”)



文章来源: How can I render html in validation message in ASP.NET MVC?