11

これを行うことにより、コントローラー内のすべてのアクションメソッドのリクエスト検証をオフにしようとしています:

[ValidateInput(false)]
public class MyController : Controller
{
    ...

私が使用している参考文献では、これは可能であり、この方法で行うように指示されていますが、何らかの理由で機能していません。

テキスト ボックスを使用して HTML (単純な <b> タグであっても) を送信すると、次のエラーが表示されます。

潜在的に危険な Request.Form 値がクライアントから検出されました (text=<b>")。

また、個々のメソッドに属性を付けても機能しません。

コントローラのリクエスト検証を無効にするにはどうすればよいですか?

編集

テストサーバーに組み込まれたVS2008で作業しています。

4

4 に答える 4

15

クラス定義とアクションメソッドの両方で自分のマシンでテストしましたが、どちらの場合もうまくいきました。ビューがメソッド/コントローラーと一致していると確信していますか? GET メソッドまたは POST メソッドに属性を付けていますか?

[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]   
public ActionResult MyAction (int id, string content) {   
    // ...   
}
于 2009-07-10T16:07:51.670 に答える
13

機能させるには、web.config も変更する必要があります。

<system.web>
    <httpRuntime requestValidationMode="2.0"/>
    ...
</system.web>
于 2011-01-13T23:18:27.253 に答える
2

Pro ASP.NET MVC フレームワーク (p466) は、次のように動作すると述べています。

public class MyController : Controller 
{
     public MyController() {
        ValidateRequest = false;
     }
}
于 2009-07-10T16:37:04.187 に答える
0

コントローラー ファイルとビュー ファイルを投稿できますか。

これは機能します。

MytestController--------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;

namespace testapp.Controllers
{
    [ValidateInput(false)]
    public class MyTestController : Controller
    {

        public ActionResult Index()
        {
            return View();
        }

    }
}

MyTest(インデックス)---------------------------------------------- ----------

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Index</title>
</head>
<body>
 <% using (Html.BeginForm()) { %>
 <%= Html.TextBox("test")%>
 <button type="submit"  >Submit</button>
 <%} %>
</body>
</html>
于 2009-07-10T17:54:19.100 に答える