gpt4 book ai didi

c# - 有没有办法将 Controller 的 ModelState 传递(或访问)到 ActionFilterAttribute?

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

我有一个从 Action 过滤器属性派生的自定义验证属性。目前,该属性只是设置一个 ActionParameter 值,指示验证的项目是否正确,然后该操作必须具有逻辑来确定如何处理信息。

 public class SpecialValidatorAttribute: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// ... valdiation work done here ...
filterContext.ActionParameters["SpecialIsValid"] = resultOfWork;

base.OnActionExecuting(filterContext);
}
}

[SpecialValidator]
public ActionResult Index(FormCollection collection, bool SpecialIsValid)
{
if(!SpecialIsValid)
// add a modelstate error here ...

// ... more stuff
}

我想在属性的 OnActionExecuting() 方法中执行 ModelState.AddModelError(),这样可以避免让 Controller 执行此逻辑。

我已尝试将 ModelState 属性添加到属性中,但此数据似乎无法传递到属性中。

有没有办法从属性中获取对 ModelState 的访问权限?

最佳答案

假设您的 Controller 类派生自 System.Web.Mvc.Controller(可能是这种情况),您可以尝试这样做:

((Controller)filterContext.Controller).ModelState.AddModelError("key", "value");

关于c# - 有没有办法将 Controller 的 ModelState 传递(或访问)到 ActionFilterAttribute?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1074838/

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