2010-01-13 59 views
1

我有一个ASP.NET MVC应用程序,我有每个viewmodel的接口。ASP.NET MVC模型默认在岗位

在一个名为/产品视图/详细资料/ 50我可以用ID编辑详细信息产品= 50

我使用强类型的意见,与类型为IProduct。我使用Castle Windsor做DI。当我在/ Product/Details/50视图上发布编辑表单时,IProduct实例默认为在同一控制器中名为Details(int id)的HttpGet方法上设置的内容。

我想这与modelbinding有关。如果我将HttpPost方法详细信息(IProduct产品)更改为详细信息(产品产品),它似乎工作正常。

任何想法?

+0

是否有任何特定的原因,您正在使用您的viewmodels接口?我个人认为,viewmodels应该都是简单的POCO对象,没有功能 - 即不需要接口。 – Charlino 2010-01-13 22:28:44

+0

没理由。我会抛弃接口。不值得额外的工作。 – MartinHN 2010-01-14 07:10:25

回答

1

这里的问题是,当我们遇到IProduct时,我们不知道要实例化哪种类型。我们的模型粘合剂不与您的DI容器集成。大多数情况下,我同意Charlino的观点,你的领域模型可能应该是基于接口的,但是你模型所绑定的对象应该是非常简单的POCO对象,它们代表了表单中发布的值。

+0

我已经考虑过倾销接口,因为我认为我得到的价值不值得做额外的工作。 – MartinHN 2010-01-14 07:09:45