2

私のコントローラーでは、リターンビューでその特定のアクションに [ValidateInput(false)] を指定しました。また、検索キーワードも追加しました。検索キーワードは< htmlです

私の URL は domainname/Clients?search=< htmlのようになります

私からしてみれば

if (Request.QueryString.AllKeys.Contains("search"))
{
 string  search = Request.QueryString["search"].ToString();
}

その後、エラーを表示

潜在的に危険な Request.QueryString 値がクライアントから検出されました (search="< html")。 カミソリ ビューでこのエラーを修正するにはどうすればよいですか?


form.serialize()とともに、jquery ajaxからmvcコントローラーに別のパラメーターを渡す方法

jquery.ajax を使用して ajax 呼び出しを行う jscroller という jQuery プラグインを使用します。検索フォームからすべてのパラメーターを渡し、それらを mvc コントローラーに渡す必要があります。最善の方法は、「データ」フィールドに次の expr を入れることだと思います。

$('#formId').serialize();

私の問題は、フォームの値とともに、呼び出しごとに変更される「ページ」の値を渡す必要があることです。

「データ」フィールドに「シリアル化」式とともにページの値を入れるにはどうすればよいですか、それとも実際にそれを行う別のより効率的な方法がありますか?

4

1 に答える 1

10

requestValidationModeweb.config で を 2.0 に設定する必要があります。

<httpRuntime requestValidationMode="2.0" />

[AllowHtml]または、特定のプロパティに対してこれらの文字のみを許可する場合は、ビュー モデルと属性を使用します。

public class SearchViewModel
{
    [AllowHtml]
    public string Search { get; set; }
}

そしてコントローラのアクション:

public ActionResult Search(SearchViewModel model)
{
    if (!string.IsNullOrEmpty(model.Search))
    {
        string search = Model.Search;
    }

    ...
}

この場合、[ValidateInput(false)]属性もrequestValidationMode="2.0"web.config も必要ありません。

それに加えて、コントローラーのアクションに魔法の文字列はもう必要ありません:-) モデルを直接操作しています。かっこいいですね。

于 2012-06-21T10:31:45.073 に答える