这是一个概念性问题,但我认为它确实有一个“答案”,希望它不会被敲开。
我在asp.net webforms(C#)中开发使用了大量的linq到sql(也使用了EF,但l2s足以满足我的大部分需求)。我刚刚完成了一个初始的MVC教程,以及“代码优先”实体模型。我可以看到一些好处,尤其是关于“关注点分离”的问题,但是我想看看你是否适合我,因为我开发的东西类型。问题:
a)整个MVC范例似乎假定定义的“类”(例如我在MVC tute中的'movie'类)。我所做的一切都涉及从linq创建adhoc匿名类型并将它们绑定到网格或图表。要使用MVC,我必须每次都创建定义的类,以便将它们从控制器传递给视图吗?这个问题(http://stackoverflow.com/questions/410073/linq-anonymous-types-mvc-views-help)似乎暗示它,或者字典作为解决方案,只能在有限的情况下使用。
b)我使用了不少第三方控件(telerik,devexpress等)。似乎没有一个适用于MVC? Telerik有一些免费的MVC扩展,但我认为我对其他控制集的投资会丢失吗?
对于noobish问题抱歉:)
标记
答案 0 :(得分:2)
a)除了这个不寻常的技巧http://tomasp.net/blog/cannot-return-anonymous-type-from-method.aspx之外,匿名类型用于在方法中进行处理,而不是用于在上下文之间传递。控制器上下文和视图上下文不同;您应该使用类型化对象在它们之间传递数据。这正是应该使用ViewModel对象的,所以不要拒绝它们的使用。
b)确实,你的webforms控件在MVC中不会让你受益,但是你也会发现很受欢迎的组件商店很久以前就已经将MVC扩展库推向了市场,因为他们预计会从webforms到MVC。 Telerik就是其中之一 - http://www.telerik.com/products/aspnet-mvc.aspx