2013-02-21 50 views
21

我目前正在开发一个注册页面。当用户已经存在时,我想为电子邮件字段的错误消息提供用户的登录和重置密码链接。在控制器我有:我怎样才能呈现验证消息的HTML ASP.NET MVC?

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

尝试'@(new HtmlString(mystring))' – jwillmer 2013-02-21 10:23:27

+0

@jwillmer,试过...我的编辑...相同的结果... – Dmytro 2013-02-21 15:34:20

回答

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

不漂亮但

+0

谢谢,它的工作... – Dmytro 2013-02-21 15:36:10

+1

这就是说,在大多数情况下让您的验证错误消息成为您的验证错误消息并单独向用户显示其他选项可能会更好。 – xr280xr 2015-10-27 17:56:43

0

发现这个职位,同时使用ASP.NET核心搞清楚了这一点自己。

我最终什么事做的是将在modelstate.AddError()我的我的验证消息的一部分,并分别增加了ViewData的是有HTML中的位,我想呈现,就像这样:

计算机[” myKey“] =”我的html“;

感觉很丑,可能有这样做的更好的办法,但对我很有限的需求,这很好地适应该法案。