我正在构建一个内容管理系统,以允许我以外的人更新网站上的内容。
我有一个前端 HTML 表单,它通过 AJAX 将数据发送到控制器:
// 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 值”
这是我尝试过的:
更改 web.config 中的验证模式,但我不想更改整个网站的验证,因为只有一个变量具有 HTML。
[AllowHtml]
在模型中,但是我仍然遇到相同的错误 - 好像[AllowHtml]
什么也没做。
[ValidateInput(false)]
在控制器中,类似于AllowHtml
,好像没有什么影响。
我在这里错过了什么吗?
我有同样的问题。“请求验证模式=”2.0“”在 web.config 中设置,[允许HTML]也设置在正确的属性上,但我仍然收到错误“检测到潜在危险的 Request.Form 值...”。
但我观察到控制器方法实际上被调用了(我能够调试该方法),因此这必须意味着验证实际上已关闭。在调用堆栈中,我注意到缓存周围的类反复出现,例如“系统.Web.缓存.OutputCacheModule”这让我想到了一个想法与缓存有关的东西我已经像这样关闭了整个控制器“[OutputCache(NoStore = true,持续时间 = 0)]”.
基于此,我尝试将缓存的位置设置为 OutputCacheLocation.None ,这达到了目的。所以我最终得到了[OutputCache(NoStore = true,持续时间 = 0,位置 = OutputCacheLocation.None)] 工作并最终没有验证并且没有失败我的请求.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)