我正在考虑为我自己的网站创建一个CMS,我认为创建页面并动态更新元标记和内容将更加容易。当我更多地考虑它时,我意识到我可以更新内容... ...
public ActionResult Index()
{
ViewBag = "My Content";
return View();
}
但我从未想过创建新页面,在我的数据库中引用它们,以及使用正确的控制器。
有没有办法在MVC中动态创建Controllers / ActionResults和相应的视图?
亲切的问候
詹姆斯
答案 0 :(得分:0)
您可以采用许多CMS系统使用的方法,即为每个页面分配数据库中的ID以及页面内容,然后使用单个控制器查找并显示页面
即:
public ActionResult Index(string pageID)
{
//Query the database for content for page with ID of pageID
ViewBag.Content = //Result from DB;
return View();
}
然后在您的页面中显示内容。如果内容包含HTML标记,请使用:
@Html.Raw(ViewBag.Content)
答案 1 :(得分:0)
如果您对页面完全需要不同的视图,请执行相同的操作,您可以执行以下操作:
public ActionResult Index(string pageID)
{
//Query the database for content for page with ID of pageID
ViewBag.Content = //Result from DB;
return View("/path/to/other/view");
}
但是,这被认为是一种不好的做法,可以自行决定使用。 http://forums.asp.net/t/1596709.aspx
答案 2 :(得分:0)
如果你想要友好的URL,我会做这样的事情:
public ActionResult Page(string url)
{
return Content("content for url");
}
然后你会有一条看似如下的路线:
routes.MapRouteLowercase(
"Page",
"{*url}",
new {controller = "CmsPage", action = "Page", url = UrlParameter.Optional});