3

次のことが可能かどうかは誰でも知っています。

public class User
{
    public Guid UserID { get; set; }

    [Required(ErrorMessage="A school selection is required.")]
    [Range(1, int.MaxValue, ErrorMessage="School not found.  Please contact support at <a href='mailto:support@mysite.com'>support@mysite.com</a>")]
    public int SchoolID { get; set; }

    // ... other properties
}

@Html.ValidationMessageFor(model => model.SchoolID)HTMLをエンコードしていませんか?多分私はこれのためにカスタムヘルパー拡張を作る必要がありますか? もっと簡単な方法はありますか?任意のガイダンスをいただければ幸いです。ヘルパー拡張機能を使用する場合、ヘルパー拡張メソッドの検証ルールにアクセスして、html がエンコードされないようにする方法を教えてください。

ありがとう。

4

3 に答える 3

0

私はもう少し検索をして、私が求めていることを行う方法を扱っている以下のSO投稿に出くわしました。将来誰かがこれに遭遇した場合に備えて、ここにその答えを追加しました。探していたベストアンサーに最も近いので、これもアンサーとしてマークしますが、モデレーターに、これを重複として閉じる必要があるかどうかを判断させます。

MVC3のHTML.ValidationMessageFor内にHTMLタグをレンダリングします

于 2012-08-16T12:56:03.773 に答える
0

1 つのエラー メッセージの回避策が必要でした。簡単な jquery 迂回路です。

 <script>
    $(document).ready(function() {
       $('.validation-summary-errors ul li').each(function(){
            if($(this).html() == "School not found"){
                $(this).html("School not found.  Please contact support at <a href='mailto:support@mysite.com'>support@mysite.com</a>");
            }
       });
    });

乾杯!

于 2014-08-30T05:44:27.530 に答える
0

これを使用する頻度に応じてHttpUtility.HtmlDecode、検証メッセージでメソッドを使用できます。

@{HttpUtility.HtmlDecode(Html.ValidationMessageFor(x=>x.SchoolId).ToString)}

より再利用可能ですが、事前に時間がかかる方法は、html でエンコードされていない文字列を返す独自の html ヘルパー (おそらく HtmlValidationMessageFor() と呼ばれる) を作成することです。

そうは言っても、 ValidationMessageFor 関数の戻り値の型はMvcHtmlStringであり、

再度エンコードしてはならない HTML エンコード文字列を表します。

しかし、二重にエンコードされた文字列である可能性があることを除いて、これを再度エンコードしてはならない理由について、確固たる理由を見つけることができませんでした。

于 2012-08-08T19:52:47.533 に答える