【问题标题】:How can I render html in validation message in ASP.NET MVC?如何在 ASP.NET MVC 的验证消息中呈现 html?
【发布时间】:2013-02-21 09:51:13
【问题描述】:

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

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

【问题讨论】:

  • 试试@(new HtmlString(mystring))
  • @jwillmer,试过了...看看我的编辑...同样的结果...

标签: c# asp.net-mvc razor


【解决方案1】:
@Html.Raw(HttpUtility.HtmlDecode(Html.ValidationMessageFor(m => m.Email).ToHtmlString()))

不好看

【讨论】:

  • 话虽如此,在大多数情况下,让您的验证错误消息成为您的验证错误消息并分别向用户显示其他选项可能是更好的样式。
【解决方案2】:

在自己使用 ASP.NET Core 解决这个问题时发现了这篇文章。

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

ViewData["myKey"]= "我的 html";

感觉很丑,可能有更好的方法,但是对于我非常有限的需求,这很适合。

【讨论】:

    【解决方案3】:

    阅读这篇文章以了解评估错误

    How to add validation errors in the validation collection asp.net mvc?

    在你看来

    Html.ValidationMessage("电子邮件")

    【讨论】:

    • 这并没有解决问题。
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2020-07-18
    • 2013-03-11
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多