繁体   English   中英

如何在ASP.NET MVC中的验证消息中呈现html?

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

我目前正在开发注册页面。 当用户已经存在时,我想在电子邮件字段的错误消息中为用户提供登录和重置密码链接。 在控制器我有:

[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>
}
@Html.Raw(HttpUtility.HtmlDecode(Html.ValidationMessageFor(m => m.Email).ToHtmlString()))

虽然不漂亮

找到这篇文章,同时使用ASP.NET Core自己解决这个问题。

我最终做的是在modelstate.AddError()中添加我的部分验证消息,并分别向ViewData添加具有我想要呈现的Html的位,如下所示:

ViewData [“myKey”] =“我的html”;

这感觉非常难看,并且可能有更好的方法,但是由于我非常有限的需求,这很合适。

阅读此文章以评估错误

如何在验证集合asp.net mvc中添加验证错误?

在你看来

Html.ValidationMessage( “电子邮件”)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM