gpt4 book ai didi

.net - 绕过获取请求的 MVC 验证

转载 作者:行者123 更新时间:2023-12-05 00:38:09 28 4
gpt4 key购买 nike

我的 Controller 中有这段代码:

[HttpGet]
public ActionResult Register(UserRegistrationModel model)
{
return View();
}

我喜欢这样做的原因是,Register 页面可以预先填充来自其他页面生成的查询字符串的值。

问题是当我的 View 被渲染时,它会显示验证错误......有没有办法绕过它?

最佳答案

快速回答:尝试在“GET”操作方法上使用 [ValidateInput(false)]

更新:
使用 asp.net 4,要让框架确认 ValidateInput 属性,您还需要在 web.config 中配置验证模式。

将以下设置为 <system.web> 的子项元素:

<httpRuntime requestValidationMode="2.0"/>

为什么在您的“GET”操作方法中有一个 ViewModel?

利用默认模型绑定(bind)器。

例如,我们有子操作返回部分 View ,这些 View 绑定(bind)到复杂的 ViewModel 设置,我们不想为每个子操作显式实例化和重建 ViewModel。

例如,订单页面的编辑页面采用 EditOrderViewModel,它继承 BaseUserViewModel,而 BaseUserViewModel 又包含用户特定的显示数据(用户名、购物车商品计数等)。

所以返回 Edit View 的操作方法如下所示:
[ValidateInput(false)]
[HttpGet]
public ViewResult Edit(EditOrderViewModel editOrderVm)
{
...
return View('Edit', editOrderVm );
}

现在只要对该子操作方法的请求以某种方式包含 BaseUserViewModel 的属性(例如,通过 Cookies、Form 和 QueryString 属性),那么默认模型绑定(bind)器将实例化并使用所有基本 View 模型数据填充 EditOrderViewModel。

然而,当我们第一次加载这个页面时,我们不希望验证消息以用户还没有机会编辑的形式出现......

因此,我们关闭“GET”请求的模型验证 > 只需确保您验证“POST”请求!

关于.net - 绕过获取请求的 MVC 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6066043/

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