首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nhibernate、MVC和ModelBinders

Nhibernate、MVC和ModelBinders
EN

Stack Overflow用户
提问于 2008-12-30 13:16:01
回答 1查看 1.4K关注 0票数 1

我想用Nhibernate配置我的模型绑定器:

所以我有:

代码语言:javascript
复制
<object id="GigModelBinder" type="App.ModelBinders.GigModelBinder, App.Web"  singleton="false"  >
<property name="VenueManager" ref="VenueManager"/>
<property name="ArtistManager" ref="ArtistManager"/>

我有一个标记控制器操作的属性,以便它们使用正确的模型绑定。

代码语言:javascript
复制
[AcceptVerbs("POST")]
    public ActionResult Create([GigBinderAttribute]Gig gig)
    {
        GigManager.Save(gig);
        return View();
    }

这可以很好地工作,并且我的GigModelBinder注入了正确的VenueManger和ArtistManager

但是,如果在应用程序启动时添加:

代码语言:javascript
复制
System.Web.Mvc.ModelBinders.Binders.Add(typeof(App.Shared.DO.Gig), new GigModelBinder());

并在控制器操作中使用:

代码语言:javascript
复制
UpdateModel<Gig>(gig);

例如:

代码语言:javascript
复制
[AcceptVerbs("POST")]
    public ActionResult Update(Guid id, FormCollection formCollection)
    {
        Gig gig = GigManager.GetByID(id);

        UpdateModel<Gig>(gig);

        GigManager.Save(gig);
        return View();
    }

未将VenueManger和ArtistManager注入GigModelBinder。

你知道我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2008-12-30 21:37:58

在第一个示例中,您通过Spring.NET检索对象。这意味着它将查找所有的依赖项,并将它们放入您的对象中,一切都会正常工作。

在第二个示例中,您始终忘记了Spring.NET,只创建了一个类的普通实例。

您在其中注册活页夹的行应该如下所示:

代码语言:javascript
复制
System.Web.Mvc.ModelBinders.Binders[typeof(App.Shared.DO.Gig)] = context.GetObject("GigModelBinder");

其中,context是来自Spring.NET包的IApplicationContext或IObjectFactory实例。

祝你好运,马蒂亚斯。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/400225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档