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

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

[HttpPost] public ActionResult Register(RegistrationModel registration) { ... if(userExists) { const string errorMessage = "User already exist. You can login ..."; ModelState.AddModelError("Email", errorMessage); return View("Register", registration); } } 

但是当我尝试在视图中输出此消息时,我没有得到我期望的结果。 我得到像纯文本一样的HTML标记。 我已经尝试过了

 @using(Html.BeginForm()) { 
@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)) }
}

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

虽然不漂亮

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

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

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

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

阅读此文章以评估错误

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

在你看来

Html.ValidationMessage( “电子邮件”)