如何在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( “电子邮件”)
- 如何在MVC3 / Razor中正确重定向(同时设置cookie)?
- 传递到字典中的模型项的类型为’System.Data.Entity.Infrastructure.DbQuery’,但此字典需要B类型的模型项
- 如何在asp.net mvc 2中进行整数模型validation
- 使Web API身份validation返回401而不是重定向到登录页面
- 如何生成动态C#图像?
- ASP.NET MVC4:属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式
- ASP.net MVC 4 WebApi – 测试MIME多部分内容
- Net Core Connection String Dapper视觉工作室2017
- 在提交点击时从asp.net mvc文本框获取价值