8

検証の要約メッセージに HTML リンクを入れることは可能ですか? たとえば、検証エラーが発生した場合に備えて、別のページへのリンクを配置したい:

@Html.ValidationSummary(False, "read <a href=""anotherpage.html"">more</a>")

また

@Html.ValidationSummary(False, "read " &
    Html.ActionLink("more", "helpforerror").ToHtmlString)

ただし、ブラウザではタグがエスケープされるため、リンクは形成されません。

4

6 に答える 6

6

あなたが回答を受け入れたことは知っていますが、既存の検証の要約へのリンクを追加したい場合、私の解決策はよりシンプルであり、書き換えが少なくて済むと思います.

{0}以下のように、検証メッセージにタイプ形式の項目を入れる必要があります。これは、リンクに置き換えられます。

ModelState.AddModelError("", "Some error message with a link here {0}.");

次に、ビューで次のように検証の概要を呼び出します。

@string.Format(Html.ValidationSummary().ToString(), Html.ActionLink("Click Here", "Action_To_Link_To")).ToHtmlString()

この場合、文字列オブジェクトに追加した拡張メソッドを使用しました。これは.ToHtmlString()、基本的に文字列を HtmlString に変換するだけで、マークアップがエスケープされるのを防ぎます。次のようになります。

public static HtmlString ToHtmlString(this String str)
{
    return new HtmlString(str);
}
于 2012-09-05T08:05:01.913 に答える
4

最後に、別の方法を選択しました。検証の概要の外にリンクなどを含む div を作成し、modelstate が有効でない場合にのみ div を追加します。

@If Not ViewData.ModelState.IsValid Then
    @<div>read <a href="anotherpage.html">more</a></div>
End If

これは、同様の質問への回答に触発されています。

于 2012-06-07T02:24:58.773 に答える
2

いいえ、デフォルトの動作では許可されていませんが、独自に作成できます。これはあなたが必要とするものです:validationsummaryのHtml raw

于 2012-06-06T04:00:31.747 に答える