如何在文件夹内的控制器中获取局部视图HTML?

问题描述 投票:1回答:2

我在Form.cshtml文件夹中有一个名为Shared的局部视图。没有任何动作和控制器。它在Shared文件夹中,我只是在Index控制器中名为Home的视图中对其进行渲染。

我发现的所有代码都需要控制器上下文,但是我没有任何控制器。那么我可以通过视图物理地址或其他方式获取HTML吗?

c# asp.net-mvc-4 partial-views
2个回答
3
投票

在控制器中,您必须这样做

   public ActionResult GetPartial()
    {
      var viewStr=RenderRazorViewToString("~/Views/Home/Partial1.cshtml",new object())
      return content(viewStr);
    }

    // by this method you can  get string of view -- Update
    public string RenderRazorViewToString(string viewName, object model)
        {
            ViewData.Model = model;
            using (var sw = new StringWriter())
            {
                var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext,
                                                                         viewName);
                var viewContext = new ViewContext(ControllerContext, viewResult.View,
                                             ViewData, TempData, sw);
                viewResult.View.Render(viewContext, sw);
                viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
                return sw.GetStringBuilder().ToString();
            }

2
投票

您需要指定查看的完整路径

Home / Index.cshtml

@Html.Partial("/Views/Shared/Form.cshtml")

编辑

https://stackoverflow.com/a/2759898/4104866,您可以使用它来呈现字符串的任何部分,我认为任何控制器上下文都可以使用,因为使用完整路径可以查看

© www.soinside.com 2019 - 2024. All rights reserved.