Is it possible to put a HTML link in validation summary message? For example I want to put a link to another page in case there is validation error:
@Html.ValidationSummary(False, "read <a href=""anotherpage.html"">more</a>")
or
@Html.ValidationSummary(False, "read " &
Html.ActionLink("more", "helpforerror").ToHtmlString)
But in the browser the tag is escaped so it doesn't form a link.
The validation text is encoded before the ValidationSumary or ValidationFor, etc...
you just need tu decode the html, then create an MvcHtmlString ...
Exemple :
this is an extension i have made to make MvcHtmlString :
or you can create an HtmlHelper if you plan to reuse this:
Hope it help you or future viewer. Note: it work for all validations Summary and ValidationFor ...
If you're sending back HTML in the ModelStateError, you can use this one liner:
It's very similar to what @Benoit had suggested, just without needing the extension.
No, the default behaviour doesn't allow it, but you can make your own. This is what you need: Html raw in validationsummary
I know you have accepted an answer, but i think my solution is more simple and will require less rewriting if you want to add links to existing validation summaries.
You need to put a
{0}
type format item in your validation message like below, which will be replaced by your link.then in your view call your validation summary like so:
In this case i have used an extension method I added to the string object
.ToHtmlString()
that basically just converts the string to an HtmlString preventing any of the markup being escaped. it looks like this:You can check if form is valid by jquery and update div with link text:
Finally I chose another way to do it: create a div containing the link etc. outside of validation summary, and add the div only if modelstate is not valid:
This is inspired by an answer to similar question.