从字符串创建视图
本文关键字:视图 创建 字符串 | 更新日期: 2023-09-27 18:34:24
我正在 MVC 4 中进行实验,如果可以将字符串转换为视图并从控制器返回它,我正在徘徊。
例如,我有一个将视图内容读取为字符串的方法。我想在渲染之前处理该字符串。所以我希望控制器将修改后的字符串输出为视图。
这可能吗?
请注意,这将在 Razor 进行任何更改后发生。我确实有一个方法可以将最终视图转换为字符串。
编辑
我有以下方法:
public static string RenderViewToString(this Controller controller, string viewName, object model)
{
controller.ViewData.Model = model;
try
{
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindView(controller.ControllerContext, viewName, null);
ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(controller.ControllerContext, viewResult.View);
return sw.ToString();
}
}
catch (Exception ex)
{
return ex.ToString();
}
}
它将最终呈现的视图(实际将在浏览器中显示的内容(返回到字符串中。
我需要做相反的事情。有一个字符串,输出一个视图。
因此,如果我有以下cshtml
:
<!doctype html>
<head>
<title>@ViewBag.Title</title>
</head>
<body>
Hello World
</body>
</html>
上面的函数将返回一个字符串,如下所示:
"<!doctype html><head><title>MyActualTitle</title></head><body>Hello World</body></html>"
现在我想要的是获取这个字符串,操作它并渲染它。例如,我想更改Hello World
.我知道我可以用Razor
做到这一点,如果我可以用另一种方法做到这一点,我只是在徘徊。
是可能的
:
public sealed class StringController : Controller
{
//
// GET: /String/
public string Index()
{
return "Hello world!";
}
}
如果您希望剃刀在返回之前处理它,那么我不确定该怎么做,但您可能不需要通过View
来执行此操作。
如果您需要创建视图表单字符串。然后查看此讨论
将视图呈现为字符串
ASP.NET MVC3 剃刀 - 从字符串创建视图?
你可以为此
使用Content
。
public ActionResult Index()
{
return Content("Some string output");
}