【问题标题】:static content pages in an MVC web applicationMVC Web 应用程序中的静态内容页面
【发布时间】:2013-02-22 18:51:14
【问题描述】:

我刚刚创建了我的第一个 MVC 3 项目,首先使用 EF db 进行数据库搜索,但搜索只是大型网站的一部分,大多数页面只包含一些文本和图像。

我的问题基本上是关于网站上的这些页面是.aspx,而后面的代码根本就没有。

他们使用母版页和一些用户控件——我猜这就是我们的前端人员将它们设为 aspx 而不是 html 的原因。

我需要将她的页面转换/包含到我的项目中(我不想在使用过 EF 和 Linq 后返回存储过程和 listview,而且我没有时间)。

我知道一种可能的方法:为每个主菜单项创建一个控制器,然后添加为返回View() 的每个子菜单项命名的 ActionResult,然后创建各自的视图。

 public class LearnAboutStandardsController : Controller
    {

        public ActionResult Index()
        {
            return View();
        }
        public ActionResult ITSStandardsBackground()
        {
            return View();
        }
        public ActionResult ResearchInitiatives()
        {
            return View();
        }

所以我的静态内容页面会变成视图。

它正在工作,我只想对其余页面执行此操作并修改这些页面文本中的链接。

还有其他方法可以处理这些页面吗?

这些页面背后没有逻辑。

我知道对于具有如此多静态内容的 MVC 模式来说,这不是一个完美的项目,但我有我的理由。

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    我使用“StaticContent”控制器来处理这个问题:

    StaticContentController.cs

    public class StaticContentController : Controller
    {
        public ActionResult About()
        {
            return View();
        }
    
        public ActionResult Services()
        {
            return View();
        }
    
        public ActionResult Portfolio()
        {
            return View();
        }
    }
    

    在你的路由配置下添加代码来处理静态路由:

    routes.MapRoute(
        "StaticContent",
        "{action}",
        new { controller = "StaticContent" },
        new { action = "About|Services|Portfolio" } // Add more here
    );
    

    你准备好了。

    如果您需要更多页面,只需在 StaticController 中添加操作并调整您的 StaticContent MapRoute。

    【讨论】:

      【解决方案2】:

      就我个人而言,我会使用具有简单操作的控制器来呈现视图。这样,如果您稍后添加更多功能,您就已经设置好了。如果您想添加安全性或缓存,它会更容易且更一致。

      对于“静态”页面,您仍然可以使用 WebForms(如果您想要“漂亮”的 URL,可以使用新的 Friendly URLs 功能)。或者您可以使用带有 Razor 的网页并为静态内容创建 CSHTML 文件。

      【讨论】:

      • 如果我使用网络表单,我将不得不维护 2 个母版页(我已经有我的 shared/_Layout.cshtml),对吗?我一直在阅读有关结合 aspx 和 MVC 的内容,并且具有简单操作的控制器似乎更容易实现,这将是从 .aspx 复制粘贴到视图中。我很高兴听到这是正确的选择...我不知道如何使用单独的 cshtml - 选择哪个项目 Add->New Item -> ???,将它们放在哪里以及如何路由。
      猜你喜欢
      • 2014-07-04
      • 2016-01-30
      • 1970-01-01
      • 2017-03-01
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      相关资源
      最近更新 更多