简体   繁体   English

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

[英]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. 我得到像纯文本一样的HTML标记。 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>
}
@Html.Raw(HttpUtility.HtmlDecode(Html.ValidationMessageFor(m => m.Email).ToHtmlString()))

虽然不漂亮

Found this post while figuring this out myself using ASP.NET Core. 找到这篇文章,同时使用ASP.NET Core自己解决这个问题。

What I ended up doing was adding my part of my validation message in modelstate.AddError(), and separately adding to ViewData the bit that had the Html I wanted to render, like so: 我最终做的是在modelstate.AddError()中添加我的部分验证消息,并分别向ViewData添加具有我想要呈现的Html的位,如下所示:

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

It feels pretty ugly and there's probably better ways of doing it, but for my very limited needs, this fit the bill nicely. 这感觉非常难看,并且可能有更好的方法,但是由于我非常有限的需求,这很合适。

Read this post for evaluate errors 阅读此文章以评估错误

How to add validation errors in the validation collection asp.net mvc? 如何在验证集合asp.net mvc中添加验证错误?

In your view 在你看来

Html.ValidationMessage("Email") Html.ValidationMessage( “电子邮件”)

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

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