我需要一些清晰的思维思维 为了提供一些好的建议,如何将这种事情做得最好。

问题

我正在构建ASP.NET MVC应用程序。我的大多数观点都有一个工具栏。工具栏上可以有几个不同的项目,例如:

  • 纽扣
  • 笔记
  • 冲洗物品(用于在工具栏最右侧放置一些按钮的动态宽度空间)
  • 等等

跟随 干燥原理 我创建了一组共享的部分视图(Toolbar, Toolbar.Button 等等)渲染预定义的工具栏对象。这些部分视图当然是强烈的打字。

然后,我有了我的强大视图,其模型与它们显示的数据相关。但是他们经常也有一个工具栏。所以在打电话之前 Html.RenderPartial("Toolbar", toolbar) 我必须准备这个 IList<ToolbarItemBase> 对象列表将其传递给它。

问题是我在视图本身中准备这些。此工具栏对象列表对于特定页面始终相同,并且也是本地化的。工具栏按钮项目也有一个 Url 使用的属性 url.action() 助手,这使得不可能简单地将串行的工具栏实例存储在数据库中。问题是这些工具栏的定义可能会变得很大(想想单词功能区及其中的项目数量)

问题

您建议什么,我应该在哪里创建我的本地化工具栏实例而不弄乱视图的代码?由于它们根本不变,所以我猜它们很可能是静态的...

有帮助吗?

解决方案

我会考虑在ASP.NET MVC 3中使用动作/呈现助手。

基本上,操作助手让您将“子请求”设置为可以构建模型并呈现部分视图的控制器操作(部分视图的结果将渲染到使用 @html.action(。 ..))。

因此,在您的情况下,您将拥有一个专门用于构建工具栏的视图模型的控制器操作,并渲染工具栏部分。使用需要工具栏的布局或内容视图中的html.Action调用此操作。

希望有帮助,

其他提示

为所有启用工具栏视图引入基本模型,并在此处准备工具栏数据。

PS我可能会为此投票下来,但是您是否考虑过回到WebForms而不是MVC?如果您的目的是模仿桌面应用程序接口的所有功能和复杂性,则MVC可能不是您的正确工具。简而言之,MVC适用于网站,WebForms适用于Web应用程序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top