链接验证摘要消息

End*_*ono 8 razor asp.net-mvc-3

是否可以在验证摘要消息中放置HTML链接?例如,我想在有验证错误的情况下将链接放到另一个页面:

@Html.ValidationSummary(False, "read <a href=""anotherpage.html"">more</a>")
Run Code Online (Sandbox Code Playgroud)

要么

@Html.ValidationSummary(False, "read " &
    Html.ActionLink("more", "helpforerror").ToHtmlString)
Run Code Online (Sandbox Code Playgroud)

但是在浏览器中,标签被转义,因此它不会形成链接.

Ben*_*Ben 6

我知道您已经接受了答案,但我认为我的解决方案更简单,如果您想要添加现有验证摘要的链接,则需要更少的重写.

您需要在验证消息中添加{0}类型格式项,如下所示,将由您的链接替换.

ModelState.AddModelError("", "Some error message with a link here {0}.");
Run Code Online (Sandbox Code Playgroud)

然后在您的视图中调用您的验证摘要,如下所示:

@string.Format(Html.ValidationSummary().ToString(), Html.ActionLink("Click Here", "Action_To_Link_To")).ToHtmlString()
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我使用了一个扩展方法,我添加到字符串对象.ToHtmlString(),基本上只是将字符串转换为HtmlString,防止任何标记被转义.它看起来像这样:

public static HtmlString ToHtmlString(this String str)
{
    return new HtmlString(str);
}
Run Code Online (Sandbox Code Playgroud)


End*_*ono 4

最后我选择了另一种方法:在验证摘要之外创建一个包含链接等的 div,并仅在 modelstate 无效时添加该 div:

@If Not ViewData.ModelState.IsValid Then
    @<div>read <a href="anotherpage.html">more</a></div>
End If
Run Code Online (Sandbox Code Playgroud)

这是受到类似问题的回答的启发。