gpt4 book ai didi

asp.net-mvc - Asp.NET MVC ModelBinder,获取 Action 方法

转载 作者:行者123 更新时间:2023-12-04 04:23:03 25 4
gpt4 key购买 nike

我有一个自定义的 ModelBinder,我想采取行动。因为我想使用反射来获取 Action 的属性,所以 Action 名称是不够的。

我的行动方法:

[MyAttribute]
public ActionResult Index([ModelBinder(typeof(MyModelBinder))] MyModel model)
{
}

这里是一个典型的 ModelBinder
public class MyModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
// here i would like to get the action method and his "MyAttribute"
}
}

任何建议,其他解决方案?

提前谢谢了

最佳答案

不,您不能 100% 确定地从模型活页夹中获取当前操作。模型绑定(bind)器不耦合到 Action ,而是绑定(bind)到模型。例如,您可以调用

TryUpdateMode(model)

在选择操作之前的过滤器中。另请注意,操作方法甚至可能不是可以反射(reflect)的 CLR 方法(参见 http://haacked.com/archive/2009/02/17/aspnetmvc-ironruby-with-filters.aspx)。

我认为真正的问题是,您到底想完成什么,这是正确的方法吗?如果您希望将操作中的信息传递给模型绑定(bind)器(请注意如果信息不存在,模型绑定(bind)器应该优雅降级的建议),您应该使用操作过滤器将信息放入 HttpContext.Items (或类似的地方),然后让你的活页夹取回它。

Action 过滤器的 OnActionExecuting 方法接收具有 ActionDescriptor 的 ActionExecutingContext。你可以调用 GetCustomAttributes 。

关于asp.net-mvc - Asp.NET MVC ModelBinder,获取 Action 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6198155/

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