C# 从字符串创建视图
我正在试验MVC4,我想知道是否有可能将字符串转换为视图并从控制器返回它 例如,我有一个将视图内容读入字符串的方法。我希望在呈现该字符串之前对其进行处理。因此,我希望控制器将修改后的字符串作为视图输出 这可能吗 请注意,这将在Razor进行任何更改后发生。我有一个方法可以将最终视图转换成字符串 编辑 我有以下方法:C# 从字符串创建视图,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我正在试验MVC4,我想知道是否有可能将字符串转换为视图并从控制器返回它 例如,我有一个将视图内容读入字符串的方法。我希望在呈现该字符串之前对其进行处理。因此,我希望控制器将修改后的字符串作为视图输出 这可能吗 请注意,这将在Razor进行任何更改后发生。我有一个方法可以将最终视图转换成字符串 编辑 我有以下方法: public static string RenderViewToString(this Controller controller, string viewName, ob
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>"
“MyActualTitleHello World”
现在我要做的是取这个字符串,操纵它并渲染它。例如,我想更改Hello World
。我知道我可以用Razor
来实现这一点,我只是想知道我是否可以用另一种方法来实现这一点。如果需要创建视图表单字符串。然后查看此讨论
可能是:
public sealed class StringController : Controller
{
//
// GET: /String/
public string Index()
{
return "Hello world!";
}
}
如果你想让razor在返回之前处理它,那么我不知道怎么做,但是你可能不需要通过
视图来处理它。你可以使用内容来处理它
public ActionResult Index()
{
return Content("Some string output");
}
不清楚的。你想让控制器在Razor之后处理一些事情?什么样的操作系统字符串,什么样的视图?我真的要把视图变成一个字符串,我想用另一种方法。所以,你想把视图变成一个字符串。。修改该字符串。。然后将新字符串呈现为视图?我认为这里缺少的链接是字符串中的实际内容。。。它是razor视图还是标准HTML?如果它是标准HTML,那么您真正需要的就是@HTML.Raw(“我的HTML”)代码>好的,我知道我可能不明白,但为什么你要这样违反MVC?