C# 从字符串创建视图

C# 从字符串创建视图,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我正在试验MVC4,我想知道是否有可能将字符串转换为视图并从控制器返回它 例如,我有一个将视图内容读入字符串的方法。我希望在呈现该字符串之前对其进行处理。因此,我希望控制器将修改后的字符串作为视图输出 这可能吗 请注意,这将在Razor进行任何更改后发生。我有一个方法可以将最终视图转换成字符串 编辑 我有以下方法: public static string RenderViewToString(this Controller controller, string viewName, ob

我正在试验MVC4,我想知道是否有可能将字符串转换为视图并从控制器返回它

例如,我有一个将视图内容读入字符串的方法。我希望在呈现该字符串之前对其进行处理。因此,我希望控制器将修改后的字符串作为视图输出

这可能吗

请注意,这将在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>"
“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?