MVC Web应用程序中的静态内容页面

时间:2013-02-22 18:51:15

标签: asp.net-mvc-3

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

我的问题基本上是关于网站上.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模式来说不是一个完美的项目,但我有我的理由。

2 个答案:

答案 0 :(得分:3)

我使用“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。

答案 1 :(得分:1)

就个人而言,我会让控制器只使用简单的动作来渲染视图。这样,如果您稍后添加了更多功能,那么您已经设置好了。如果你想增加安全性或缓存,它会更容易和更一致。

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