构建具有多个视图的页面

时间:2009-11-04 12:12:49

标签: asp.net-mvc

我正在寻找构建一个ASP.NET MVC应用程序,其中许多屏幕将具有多个不同的视图。理想情况下,用户可以以门户网站样式将他们需要的项目带入工作区页面。即使这是不可能的,也需要为各种类型的用户以各种方式加入一些共同的项目:传统继承难以实现的目标。

在我看来,URL结构只允许一个控制器实例化,并且为此一次调出一个视图(并且只有一个) - 不在页面上放置多个视图。在这里搜索我已经看到了对MVC Contrib子控制器的引用,但我在http://www.codeplex.com/MVCContrib网站上看不到它们以便进一步检查它们?

分控制器是否可行?如果是这样,我现在在哪里找到它们。如果没有,你会建议什么?

4 个答案:

答案 0 :(得分:2)

如果您想坚持使用asp.net mvc,那么您可以使用部分视图,它将/应该为您提供“Web部件”类型功能,这听起来像您想要的。然后,您可以根据主页面视图上的权限等限制您想要查看的部分视图(这可以通过基本控制器类或其他方式公开)。

我已经做了一些搜索,并提出了一些你可能会觉得有用的链接......

Jeffrey Palermo - 谈论模仿部分观点

Rob Conery - 使用asp.net mvc的用户控件

mikesdotnetting.com - ASP.NET MVC部分视图和强类型自定义ViewModels(不是全部阅读,但它看起来非常有用)

希望这有帮助。

答案 1 :(得分:1)

看看期货装配及其RenderAction()的实现。虽然它不是纯粹的MVC,但它们基本上可以用作小部件。它们从视图中调用并通过一个单独的控制器,然后呈现局部视图。这听起来像你可能正在寻找的。

这是一个例子......

//Various view data

<div id="user-info">
    <% Html.RenderAction("UserInfo"); %>
</div>

//Rest of view data

这将在当前控制器上查找名为“UserInfo”的操作方法。然后该控制器可以执行它需要做的事情,并将其结果发送到将代替Html.RenderAction()呈现的部分视图。

答案 2 :(得分:0)

控制器不受任何特定视图的约束。根据您的业务逻辑,控制器/操作可以显示您想要的任何视图。

修改 您可以尝试编写HtmlHelpers和部分视图。这些是您应该使用的,而不是分别使用webforms的服务器控件和用户控件。

答案 3 :(得分:0)

听起来你正在做两件不同的事情:

  • 在页面上添加项目是Web部件而非asp.net mvc
  • 使用控制器选择要显示的视图没有问题,但一次只能显示一个。

修改

您要做的事情需要sharepoint和asp.net mvc。可以将这些组合起来,请参阅:Using Asp.Net MVC with SharePoint