我刚刚使用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模式来说不是一个完美的项目,但我有我的理由。
答案 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文件。