c# - AllowHtml 不工作

标签 c# asp.net-mvc-4

我正在构建一个内容管理系统,以允许我以外的人更新网站上的内容。

我有一个前端 HTML 表单,它通过 AJAX 将数据发送到 Controller :

// CONTROLLER
[ValidateInput(false)]
public void CarAJAX()
{
    CarAdmin CA = new CarAdmin();
    CA.UpdateCar(System.Web.HttpContext.Current.Request);
}

此数据将包含 HTML,因此我的模型中不断出现错误:

// MODEL
using System;
using System.Web;
using System.Web.Mvc;

namespace Site.Models
{
    public class CarAdmin
    {
        public String id { get; set; }
        [AllowHtml]
        public String HTML_Stuff { get; set; }

        public CarAdmin(){}

        public void UpdateCar(HttpRequest Request)
        {
            HTML_Stuff = Request.Form["HTML_Stuff"]; // <-- ERROR HAPPENS HERE!!!!!!

            // sanitation and validation

            String Select = String.Format("UPDATE Car Set HTML_Stuff = {0} WHERE id = {1}", HTML_Stuff, id);

            // Execute DB Command
        }
    }
}

如代码所示,当我尝试将成员设置为等于具有 HTML 的请求变量时出现错误。

编辑:错误是“检测到潜在危险的 Request.Form 值”

这是我尝试过的:

  • Change the validation mode in web.config ,但我不想更改整个站点的验证,因为只有一个变量将具有 HTML。

  • [AllowHtml] 在模型中,但是我仍然遇到相同的错误 - 就好像 [AllowHtml] 什么也没做一样。

  • Controller中的
  • [ValidateInput(false)],类似AllowHtml,似乎没有任何影响。

我是不是漏掉了什么?

最佳答案

我遇到了同样的问题。 "requestValidationMode="2.0"" 是在 web.config 中设置的,[AllowHtml] 也是在适当的属性上设置的,我仍然收到错误消息“A potentially dangerous Request.Form检测到的值...”。

但我观察到实际上调用了 Controller 方法(我能够调试该方法),因此这必须意味着验证实际上已关闭。在 Call Stack 中,我注意到围绕缓存重复出现的类,如 "System.Web.Caching.OutputCacheModule",这让我想到这与缓存有关我像这样关闭了整个 Controller “[OutputCache(NoStore = true, Duration = 0)]”

基于此,我还尝试将缓存的位置设置为 OutputCacheLocation.None,这成功了。所以我最终得到了[OutputCache(NoStore = true, Duration = 0, Location = OutputCacheLocation.None)] 工作并且最终没有验证并且没有失败我的请求。。 p>

关于c# - AllowHtml 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31115194/

相关文章:

c# - 使用 Telerik RadGrid 如何从客户端隐藏 GridHyperLinkColumn?

c# - Windows 上的远程桌面 + 隧道

asp.net-mvc-4 - MVC4 自定义不显眼的验证器不起作用

asp.net-mvc - 使用 MOQ 的单元测试 Controller 。如何模拟httpcontext

c# - ASP.Net WEB API 无法从移动设备发布大型 JSON 数据

c# - TFS 构建服务器 2013 和 XUnit

c# - 如何使用 Moq 测试方法调用顺序

c# - 从字符串中拆分并删除重复项

c# - 模型值在回发期间丢失

asp.net-mvc-4 - 无法使用 ASP.NET (MVC 4) Web API OData 预发行版加载文件或程序集 System.Net.Http,版本=4.0.0.0