【问题标题】:asp.net mvc Can i have one view for multiple action methods to target? or do i need a separate view for each?asp.net mvc 我可以针对多种操作方法有一个视图吗?还是我需要为每个单独的视图?
【发布时间】:2010-02-19 03:17:27
【问题描述】:

我已经设置了一个菜单控制器,以根据正在使用的其他控制器来驱动顶部菜单链接。每个其他控制器的每个视图都有一个单独的嵌套母版页。

所以,我有一个菜单控制器,它有几种返回视图结果的方法,每个控制器一个,或者网站的“部分”。所以目前这些方法中的每一个都有自己的视图来呈现菜单。但是渲染菜单的每​​个视图都是相同的代码,唯一改变的是控制器方法中的逻辑基于要渲染的链接。

有没有办法让所有这些控制器动作都针对同一个视图?因为所有人的观点都是一样的?

谢谢

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    是的,这是一种常见的做法。

    return View("Menu");
    

    【讨论】:

      【解决方案2】:

      创建一个强类型视图,该视图接受一个指定菜单内容的容器。将此作为参数传递给您的 return 语句。

       var thisMenu = CreateMenuForThisRequest();
       return View ("Menu", thisMenu);
      

      【讨论】:

        【解决方案3】:

        这取决于您使用的 ASP MVC 版本;使用 MVC 2,您可以创建 ascx 控件并使用 RenderAction

        在你看来,你会放一些类似的东西

        Html.RenderAction("Menu", "Navigation");

        并有一个带有菜单操作结果的导航控制器

        public class NavigationController : Controller { [ChildActionOnly] public ActionResult Menu() { Menu model;//your menu return PartialView("YourMenuAscxControlName", model); } }

        我认为如果您使用的是 MVC 1,MVC Future 项目有 RenderAction,但我不确定。

        【讨论】:

        • MVC Future for MVC 1 具有 RenderAction
        【解决方案4】:

        对于我的菜单,我使用 RenderAction 方法 我也在使用 Steve Sanderson 的 ActionOutputCacheAttribute http://blog.stevensanderson.com/2008/10/15/partial-output-caching-in-aspnet-mvc/

        您将通过此缓存大大增加您的网站加载时间

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多