首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp.net MVC -复杂的例子?

asp.net MVC -复杂的例子?
EN

Stack Overflow用户
提问于 2009-10-01 13:46:39
回答 7查看 3.4K关注 0票数 9

我们正在评估asp.net MVC,并在NerdDinner之上寻找一些更复杂的示例。

具体地说,在更复杂的web应用中,我可能有一个导航栏(包括主导航、搜索框和登录状态显示)、一个主内容区、一个子内容区(包括相关内容)和一个页脚。在MVC中,控制器返回一个ViewModel (如果我想要将控制器从视图中分离出来,就不能返回视图)--我的ViewModel必须有属性来覆盖我打算呈现为输出的“页面”的每一个方面吗?

如果这一点不清楚,我可以重新定义我的问题。

顺便说一句,我知道这个网站是用MVC构建的。我正在寻找可下载的示例。

提前谢谢。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-10-01 13:51:53

看看CodeCampServer吧。

编辑:关于视图模型的查询,这不是一个完美的答案,但我想我应该注意AutoMapper (由CodeCampServer使用),它可以帮助在模型和视图模型之间自动映射数据,这是一个实时保存程序。同样值得考虑的是输入构建器的概念(在MVCContrib中有一些,在ASP.NET MVC 2中也有一些),它还将通过全面封装通用功能来减少必须传递到视图中的数据量。

在ASP.NET MVC2上有一个很好的视频:http://channel9.msdn.com/posts/Glucose/Hanselminutes-on-9-ASPNET-MVC-2-Preview-1-with-Phil-Haack-and-Virtual-Scott/

票数 6
EN

Stack Overflow用户

发布于 2009-10-01 16:40:49

这就对了:

代码语言:javascript
复制
<% Html.RenderAction<LayoutController>(c => c.SearchBox()); %>
<% Html.RenderAction<LayoutController>(c => c.NavBox(Model)); %>

将它们放在您的母版页中,或者放在侧栏小部件的特定视图中,并将它们的逻辑从您正在处理的控制器/视图模型中抽象出来。它们甚至可以读取当前的RouteData (url/动作)和ControllerContext (参数/模型),因为您正在处理这些对象中的环境值-并执行完整的ActionMethod请求!

I blogged about this little known secret here。我还在博客上介绍了它的位置,这是一个独立于微软的附加组件ASP.NET 1.0 MVC Futures assembly

Steve Sanderson实际上在我的一本名为Pro ASP.NET MVC的书中给出了复杂逻辑和应用程序构建的例子(我知道,这是无耻的插头,但这正是您在问题中寻找的),他实际上使用了RenderAction!我在读这本书之前就写了这篇博文,所以我很高兴我们是在同一个页面上。

实际上,有几十个由ASP.NET MVC团队开发的扩展和功能被ASP.NET MVC1.0项目遗漏了-其中大多数使复杂的项目更易于管理。这就是为什么更复杂的示例(在大多数人的答案中列出了上面的列表)必须使用某种类型的自定义ViewEngine,或者使用基本控制器和自定义控制器的一些大跳跃。我看过上面列出的几乎所有的开源版本。

但归根结底,它并不是看一个复杂的示例,而是知道如何实现您想要的复杂逻辑-例如,当您所拥有的只是单个控制器中的一个ViewModel时,您的导航栏。必须将导航栏绑定到每个ViewModel上,这很快就会变得很累。

因此,其中的一个示例是Html.RenderAction()扩展(正如我开始时所做的那样),它允许您将更复杂/抽象的逻辑从视图模型/控制器中移出(在视图模型/控制器中,它甚至与您无关),并将其放入它所属的自己的控制器操作中。

这个小宝宝为我节省了MVC,特别是在我目前正在处理的大型企业项目中。

您可以将视图模型传递到RenderAction中,或者只是呈现页脚或页眉区域之类的内容-并让逻辑包含在这些操作中,在这些操作中,您可以只触发并忘记(编写RenderAction,忘记它对页眉或页脚做的任何事情)。

票数 3
EN

Stack Overflow用户

发布于 2009-10-01 21:51:13

欢迎你来看看good.codeplex.com

它有很多你在上面寻找的东西,但还有工作要做!但是,在您看过之后,我很乐意在codeplex上回答关于它的问题。

这就是mygoodpoints.org当前运行的平台。

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

https://stackoverflow.com/questions/1504073

复制
相关文章

相似问题

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