如何创建内容管理页面

时间:2014-03-17 13:00:08

标签: asp.net-mvc asp.net-mvc-4

我有一个ASP.NET MVC应用程序,我需要添加内容管理页面。由于它的CMS,页面的路径将是可变的。我试图弄清楚如何让ASP.NET显示一个可变的视图。控制器是什么样的?

代码是这样的: Dim MyView As New System.Web.Mvc.ViewResult() 返回MyView

但这并不能让我定义视图的内容,我不知道该怎么做。视图实际上不存在;我需要从我的数据库中的数据动态生成它。我将HTML存储在数据库中。

2 个答案:

答案 0 :(得分:1)

您可以手动创建内容",不使用Razor视图,并在动作方法中使用生成的HTML而不是Content返回View

编辑:

或者,创建一个包含所有公共元素的主视图,这些元素将生成的内容作为字符串接受:

@model string
<html>
  <!-- all the common stuff here -->
  @Html.Raw(Model)
  <!-- more common stuff -->
</html>

您的控制器将生成HTML并将其传递给此视图:

public ActionResult Index()
{
    var html = GenerateContent(); // or whatever
    return ActionResult("MasterView", (object)html);
}

将第二个参数强制转换为对象非常重要,否则会将其解释为布局位置。

如果您需要在公共组件之间插入生成的内容,您可以将字符串字典作为模型传递,并仅渲染您喜欢的部分,例如。 Html.Raw(Model["footer"])

答案 1 :(得分:0)

  

控制器是什么样的?

public ActionResult Index()
{
    string dynamicViewName = "~/Views/Shared/FooBar.cshtml";
    return View(dynamicViewName);
}

如果您愿意,也可以指定布局:

public ActionResult Index()
{
    string dynamicViewName = "~/Views/Shared/FooBar.cshtml";
    string dynamicLayout = "~/Views/Shared/_SomeLayout.cshtml";

    return View(dynamicViewName, dynamicLayout);
}