Asp.net mvc 在哪里为Asp.net MVC视图准备非视图模型对象

Asp.net mvc 在哪里为Asp.net MVC视图准备非视图模型对象,asp.net-mvc,optimization,strongly-typed-view,Asp.net Mvc,Optimization,Strongly Typed View,我需要一些清晰的思维来提供一些好的建议,如何将这类事情做到最好 问题 我正在构建一个Asp.net MVC应用程序。我的大多数视图的顶部都有一个工具栏。工具栏上可以有几个不同的项目,如: 钮扣 注释 刷新项(动态宽度空间,用于将一些按钮放置在工具栏最右侧) 等等 为了遵循干燥原则,我创建了一组共享的局部视图(Toolbar,Toolbar.Button等),用于呈现预定义的工具栏对象。这些局部视图当然是强类型的 然后我有我的强类型视图,其模型与它们显示的数据相关。但它们通常也有一个工具栏。因

我需要一些清晰的思维来提供一些好的建议,如何将这类事情做到最好

问题 我正在构建一个Asp.net MVC应用程序。我的大多数视图的顶部都有一个工具栏。工具栏上可以有几个不同的项目,如:

  • 钮扣
  • 注释
  • 刷新项(动态宽度空间,用于将一些按钮放置在工具栏最右侧)
  • 等等
为了遵循干燥原则,我创建了一组共享的局部视图(
Toolbar
Toolbar.Button
等),用于呈现预定义的工具栏对象。这些局部视图当然是强类型的

然后我有我的强类型视图,其模型与它们显示的数据相关。但它们通常也有一个工具栏。因此,在调用
Html.RenderPartial(“Toolbar”,Toolbar)
之前,我必须准备这个
IList
对象列表以将其传递给它

问题是我正在视图本身中准备这些。对于特定页面,此工具栏对象列表始终相同,并且也是本地化的。工具栏按钮项还有一个
Url
属性,该属性是使用Url.Action()helper设置的,这使得不可能简单地将序列化的工具栏实例存储在数据库中。问题是这些工具栏定义可能会变得非常大(想想Word ribbon和其中的项目数量)

问题:
您有什么建议,我应该在哪里创建本地化的工具栏实例,而不会弄乱视图的代码?因为它们根本不会改变,我想它们很可能是静态的…

为所有启用工具栏的视图引入一个基本模型,并在那里准备工具栏数据


另外,我可能会被否决,但你有没有考虑过回到WebForms而不是MVC?如果您打算模仿桌面应用程序界面的所有功能和复杂性,那么MVC可能不是适合您的工具。简言之,MVC是针对Web站点的,Web窗体是针对Web应用程序的。

< P>我会考虑在ASP.NET MVC 3中使用Actudio/RealDebug助手。p> 基本上,Action helper允许您为控制器操作设置一个“子请求”,该操作可以构建一个模型并呈现部分视图(部分视图的结果将呈现到外部视图中,在外部视图中使用@Html.Action(…)

所以。。。在您的场景中,您将有一个控制器操作,专门用于为工具栏构建视图模型,并渲染工具栏部分。使用需要工具栏的布局或内容视图中的Html.action调用此操作


希望这会有所帮助,

您是从哪里想到MVC用于网站,webforms用于web应用程序的?MVC是结构化和有序的,Web表单是混乱和复杂的。两者都是很好的web应用程序平台。从Asp.net 1.0测试版开始,我就一直在开发WebForms应用程序。从1.0 RTM开始使用MVC。我不同意你对MVC和WebForms的比较,但是你对一些集中化的课程的看法是正确的。我更倾向于使用所有工具栏定义的静态类,但这仍然会使它变得非常复杂。我更喜欢使用一个自定义的
ViewPage
类,它能够读取某种工具栏配置字符串,并对其进行解析,插入本地化和动态数据。这个想法是基于我在这两方面的长期经验。很明显,每个人的目标都是什么样的问题。MVC在客观上并不比WebForms好。他们实施不同的概念,解决不同的问题。有些情况下MVC无法解决,有些情况下WebForms将是真正的痛苦。这完全取决于应用程序。但是,这只是我个人的观点。没想到会在这个问题上达成一致。