首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建动态ActionResult

创建动态ActionResult
EN

Stack Overflow用户
提问于 2013-11-15 21:44:33
回答 3查看 2.2K关注 0票数 0

我正在考虑为我自己的网站创建一个内容管理系统,我认为它会更容易创建页面和更新元标签和内容的飞行。当我想得更多的时候,我意识到我可以更新内容,比如说...

代码语言:javascript
复制
public ActionResult Index()
{
  ViewBag = "My Content";
  return View(); 
}

但我从未想过要创建新页面,在数据库中引用它们,并使用正确的控制器。

有没有办法在MVC中动态创建控制器/ ActionResults和相应的视图?

亲切的问候

詹姆斯

EN

回答 3

Stack Overflow用户

发布于 2013-11-15 21:49:40

您可以采用许多CMS系统使用的方法,即在数据库中为每个页面分配一个ID以及页面内容,然后使用单个控制器来查找和显示页面

即:

代码语言:javascript
复制
public ActionResult Index(string pageID)
{
    //Query the database for content for page with ID of pageID
    ViewBag.Content = //Result from DB;
    return View(); 
}

然后在你的页面中只显示内容。如果内容包含HTML标记,请使用:

代码语言:javascript
复制
@Html.Raw(ViewBag.Content)
票数 0
EN

Stack Overflow用户

发布于 2013-11-15 21:53:27

如果你确实需要页面的不同视图,通过相同的操作,你可以这样做:

代码语言:javascript
复制
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

票数 0
EN

Stack Overflow用户

发布于 2013-11-15 22:07:17

如果你想要友好的URL,我会这样做:

代码语言:javascript
复制
public ActionResult Page(string url)
{
    return Content("content for url");
}

然后你会有一个看起来像这样的路由:

代码语言:javascript
复制
routes.MapRouteLowercase(
    "Page",
    "{*url}",
    new {controller = "CmsPage", action = "Page", url = UrlParameter.Optional});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20002482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档