我正在考虑为我自己的网站创建一个内容管理系统,我认为它会更容易创建页面和更新元标签和内容的飞行。当我想得更多的时候,我意识到我可以更新内容,比如说...
public ActionResult Index()
{
ViewBag = "My Content";
return View();
}但我从未想过要创建新页面,在数据库中引用它们,并使用正确的控制器。
有没有办法在MVC中动态创建控制器/ ActionResults和相应的视图?
亲切的问候
詹姆斯
发布于 2013-11-15 21:49:40
您可以采用许多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)发布于 2013-11-15 21:53:27
如果你确实需要页面的不同视图,通过相同的操作,你可以这样做:
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
发布于 2013-11-15 22:07:17
如果你想要友好的URL,我会这样做:
public ActionResult Page(string url)
{
return Content("content for url");
}然后你会有一个看起来像这样的路由:
routes.MapRouteLowercase(
"Page",
"{*url}",
new {controller = "CmsPage", action = "Page", url = UrlParameter.Optional});https://stackoverflow.com/questions/20002482
复制相似问题