- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我已经尝试了很多组合,但无法获得关闭此代码块的验证
[ValidateInput(false)]
public ActionResult aSavePageCopy()
{
aLoggedIn();
int id = Convert.ToInt32(Request.Form["id"]);
PagesDataContext pdc = new PagesDataContext();
Page p = pdc.Pages.Single(row => row.ID == id);
p.PageCopy = Request.Form["PageCopy"];
pdc.SubmitChanges();
return Redirect("/Admin/aViewPages");
}
这似乎对其他人有用,所以我看不出我在这里遗漏了什么。我得到的错误是 A potentially dangerous Request.Form value was detected from the client
最佳答案
您可以使用可以安全访问的 FormCollection
而不是 Request.Form
(但请不要使用它,请参阅下面的问题的真正解决方案) :
[ValidateInput(false)]
public ActionResult aSavePageCopy(FormCollection fc)
{
aLoggedIn();
int id = Convert.ToInt32(fc["id"]);
PagesDataContext pdc = new PagesDataContext();
Page p = pdc.Pages.Single(row => row.ID == id);
p.PageCopy = fc["PageCopy"];
pdc.SubmitChanges();
return Redirect("/Admin/aViewPages");
}
当然,这是解决问题的绝对荒谬和糟糕的方法。正确的做法是使用 View 模型(当然):
public class MyViewModel
{
public int Id { get; set; }
public string PageCopy { get; set; }
}
然后:
[ValidateInput(false)]
public ActionResult aSavePageCopy(MyViewModel model)
{
aLoggedIn();
PagesDataContext pdc = new PagesDataContext();
Page p = pdc.Pages.Single(row => row.ID == model.Id);
p.PageCopy = model.PageCopy;
pdc.SubmitChanges();
return Redirect("/Admin/aViewPages");
}
或者,如果您使用的是 ASP.NET MVC 3,并且只想对 View 模型上的单个属性禁用验证,而不是对整个请求都进行验证,则可以使用 [AllowHtml] 装饰此 View 模型属性
属性:
public class MyViewModel
{
public int Id { get; set; }
[AllowHtml]
public string PageCopy { get; set; }
}
然后您的操作不再需要 [ValidateInput(false)]
属性:
public ActionResult aSavePageCopy(MyViewModel model)
{
aLoggedIn();
PagesDataContext pdc = new PagesDataContext();
Page p = pdc.Pages.Single(row => row.ID == model.Id);
p.PageCopy = model.PageCopy;
pdc.SubmitChanges();
return Redirect("/Admin/aViewPages");
}
不仅我们已经解决了这个问题,而且正如您所看到的,您不再需要在 Controller 操作中编写任何管道代码来解析整数和模型绑定(bind)器的角色。
关于c# - 我无法使 ValidateInput(False) 工作 - 从客户端检测到具有潜在危险的 Request.Form 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12027389/
因此,在 ASP.NET MVC2 应用程序的一部分中,我必须允许从典型的富文本框输入 HTML。因此,我在 Controller 方法上添加了一个属性以关闭 MVC 的暴力输入验证。 但是,现在我该
我有一个用于创建备忘录的表单,为此我使用富文本编辑器来提供一些样式,这会创建 html 标签以应用样式。当我发布该文本时,mvc 会抛出错误以防止潜在危险的脚本,因此我必须明确允许它。 我发现有两种方
我正在将使用 webforms 创建的应用程序转换为使用 vb.net 的 asp.net mvc 框架。我的其中一个观点有问题。当我提交表单时,出现蓝屏死机,提示“从客户端检测到潜在危险的 Requ
在 ASP.NET Framework 中,当我想将 HTML 代码从 Javascript 传递到 Controller 时,只需在 Method 之前写 [ValidateInput(false)
我正在尝试解决“潜在危险的 Request.Form 值”错误,但运气不佳。是的,是的,我已经阅读了所有其他 StackOverflow 相关问题,但似乎没有一个能让我更接近答案。我正在使用[Vali
我需要从普通的 MVC Controller 迁移到 WebApi Controller 。 我的普通 mvc Controller 。 [HttpPost] [ValidateInput(false
我已经尝试了很多组合,但无法获得关闭此代码块的验证 [ValidateInput(false)] public ActionResult aSavePageCopy() {
我的强类型 View 中有一个 TextArea 定义为 @Html.TextAreaFor(x => x.Text) 我的 Controller Action 最初看起来与此类似: [HttpPos
我已经安装了 VS2010 和 MVC2 并使用 tinyMCE 测试了一个简单的表单。当我在 tinyMCE 中发布 textarea 的内容时,我收到了可怕的 YSD 和消息 "a potenti
我想用正则表达式验证器截获form字段中的“] * $”,ErrorMessage =“不允许使用特殊字符。”)],我再次收到的“潜在危险请求...”错误,尽管[ValidateInput(false
如何允许用户使用 ASP.net MVC 将 HTML 输入到特定字段中。 我有一个很长的表单,其中有许多字段映射到 Controller 中的这个复杂对象。 我想让一个字段(描述)允许 HTML,稍
我有我的模型: public class EmailTemplateModel { public int EmailTemplateId { get; set; } [Required
我是一名优秀的程序员,十分优秀!