gpt4 book ai didi

c# - 我无法使 ValidateInput(False) 工作 - 从客户端检测到具有潜在危险的 Request.Form 值

转载 作者:太空狗 更新时间:2023-10-30 00:43:11 26 4
gpt4 key购买 nike

我已经尝试了很多组合,但无法获得关闭此代码块的验证

[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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com