代码之家  ›  专栏  ›  技术社区  ›  BC.

ASP.NET MVC中复杂动作参数的旁路模型绑定器?

  •  0
  • BC.  · 技术社区  · 16 年前

    是否有一个属性可以关闭复杂动作参数的模型绑定?

    我的场景是这样的:我使用linq to sql,但是让生成的类实现接口。例如,iuser。我的一些控制器操作接受iuser参数,我的一些视图绑定iuser模型,但我不希望默认的模型绑定器构造它。我用动作过滤器。其背后的思想是,如果一个操作需要用户详细信息,则在调用该操作之前,操作筛选器会从数据库中获取该操作。

    为了避免DefaultModelBuilder启动时出现的错误,我制作了一个空模型绑定器,它只从CreateModel返回空值。

    ModelBinderDictionary binders = System.Web.Mvc.ModelBinders.Binders;
    binders[typeof(IUser)] = new NullModelBinder();
    
    1 回复  |  直到 14 年前
        1
  •  0
  •   Neal    15 年前

    遵循这个体系结构并创建一个iuser绑定器来完成您的动作过滤器所做的工作难道不简单吗?目前,您正在使操作过滤器做一些它不完全打算做的事情,在这个过程中,您还忽略了专门为您试图实现的目标而设计的扩展点(以特定方式创建参数的实例)。

    在操作过滤器中创建iuser而不是使用自定义绑定器有什么好的理由吗?