簡體   English   中英

我無法關閉ASP.NET MVC控制器的請求驗證

[英]I can't turn off Request Validation for an ASP.NET MVC Controller

我試圖通過執行以下操作關閉控制器中所有操作方法的請求驗證:

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

我正在使用的參考說這是可能的,並告訴我這樣做,但由於某種原因,它不起作用。

如果我通過文本框提交任何html(甚至是簡單的<b>標簽),我會收到錯誤消息:

從客戶端檢測到一個潛在危險的Request.Form值(text = <b>“)。

通過將屬性附加到單個方法也無法正常工作。

如何禁用控制器的請求驗證?

編輯

我在VS2008內置測試服務器。

我在我的機器上測試了它,在類定義和動作方法上,它在兩種情況下都適用於我。 您確定您的視圖與您的方法/控制器對齊嗎? 您是將該屬性放在GET方法還是POST方法上?

[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]   
public ActionResult MyAction (int id, string content) {   
    // ...   
}

要使其正常工作,您還需要修改web.config:

<system.web>
    <httpRuntime requestValidationMode="2.0"/>
    ...
</system.web>

Pro ASP.NET MVC框架(p466)說以下應該有效:

public class MyController : Controller 
{
     public MyController() {
        ValidateRequest = false;
     }
}

你可以發布你的控制器文件和你的視圖文件。

這有效;

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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM