我有一个需要添加内容管理页面的ASP.NET MVC应用程序。因为它是CMS,页面的路径将是可变的。我试图弄清楚如何让ASP.NET显示一个可变的视图。控制器是什么样子的?
代码如下所示: Dim MyView作为新的System.Web.Mvc.ViewResult()返回MyView
但这并不让我定义视图的内容,我不知道该如何做。视图在物理上并不存在;我需要从数据库中的数据动态生成视图。我正在将HTML存储在数据库中。
发布于 2014-03-17 16:29:42
您可以“手动”创建内容,无需Razor视图,并在操作方法中使用生成的HTML而不是View返回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"])
发布于 2014-03-17 13:09:23
控制器是什么样子的?
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);
}https://stackoverflow.com/questions/22454949
复制相似问题