如何在 ASP.NET MVC 中的验证消息中呈现 html? [英] How can I render html in validation message in ASP.NET MVC?
本文介绍了如何在 ASP.NET MVC 中的验证消息中呈现 html?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我目前正在开发一个注册页面.当用户已经存在时,我想在电子邮件字段的错误消息中为用户提供登录和重置密码链接.在控制器中我有:
[HttpPost]public ActionResult Register(注册模型注册){...如果(用户存在){const string errorMessage = "用户已经存在.您可以<a href="/account/login">登录</a> ...";ModelState.AddModelError("Email", errorMessage);返回视图(注册",注册);}}
但是当我尝试在视图中输出此消息时,我没有得到我期望的结果.我得到像纯文本一样的 html 标记.我已经试过了:
@using(Html.BeginForm()){<div>@Html.TextBoxFor(m => m.Email)@{@Html.ValidationMessageFor(m => m.Email)...@Html.Raw(Html.ValidationMessageFor(m => m.Email))...stringvalidationMessage = Html.ValidationMessageFor(m => m.Email).ToString();@Html.Raw(validationMessage)...stringvalidationMessage = Html.ValidationMessageFor(m => m.Email).ToHtmlString();@Html.Raw(validationMessage)...stringvalidationMessage = Html.ValidationMessageFor(m => m.Email).ToString();@(new HtmlString(validationMessage))...stringvalidationMessage = Html.ValidationMessageFor(m => m.Email).ToHtmlString();@(new HtmlString(validationMessage))...stringvalidationMessage = Html.ValidationMessageFor(m => m.Email).ToString();@(new MvcHtmlString(validationMessage))...stringvalidationMessage = Html.ValidationMessageFor(m => m.Email).ToHtmlString();@(new MvcHtmlString(validationMessage))}
}
解决方案
@Html.Raw(HttpUtility.HtmlDecode(Html.ValidationMessageFor(m => m.Email).ToHtmlString()))
虽然不好看
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. 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()))
Isn't pretty though
这篇关于如何在 ASP.NET MVC 中的验证消息中呈现 html?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文