gpt4 book ai didi

c# - 从字符串创建 View

转载 作者:太空狗 更新时间:2023-10-30 01:05:19 24 4
gpt4 key购买 nike

我正在 MVC 4 中进行试验,我正在考虑是否可以将字符串转换为 View 并从 Controller 返回它。

例如,我有一个将 View 内容读入字符串的方法。我想在渲染之前处理该字符串。所以我希望 Controller 将修改后的字符串作为 View 输出。

这可能吗?

请注意,这将在 Razor 进行任何更改后发生。我确实有一种方法可以将最终 View 转换为字符串。

编辑

我有以下方法:

    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();
}
}

它将最终呈现的 View (实际上将要在浏览器中显示的内容)返回到一个字符串中。

我需要做相反的事情。有了字符串,输出一个View。

所以如果我有以下 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!";
}
}

如果你想让 Razor 在返回之前处理它,那么我不确定该怎么做,但你可能不需要通过 View 来做到这一点。

关于c# - 从字符串创建 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19221893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com