代码之家  ›  专栏  ›  技术社区  ›  Jhorra

需要在contentresult中返回共享的部分视图

  •  3
  • Jhorra  · 技术社区  · 14 年前

    我已经创建了一个basecontroller类,它基于我发现的一篇博客文章,作为控制器中ContentResult类型操作的结果返回部分视图。代码如下:

        protected string RenderPartialViewToString(string viewName, object model)
        {
            if (string.IsNullOrEmpty(viewName))
                viewName = ControllerContext.RouteData.GetRequiredString("action");
    
            ViewData.Model = model;
    
            using (StringWriter sw = new StringWriter())
            {
                ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
                ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
                viewResult.View.Render(viewContext, sw);
    
                return sw.GetStringBuilder().ToString();
            }
        }
    

    我用以下方法来回报:

    return Content(RenderPartialViewToString("LocationStaffSearch", lcps));
    

    所以现在我需要返回一个部分,这是一个共享视图。我似乎不知道如何传递名字,所以它找到了部分。如果我只输入名称,它会显示一个空白字符串。如果我输入Share/LocationStaffSearch,它会返回一个错误,表示视图为null。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Jhorra    14 年前

    我找到了答案,问题是在过去的某个时候,我在控制器的视图文件夹中创建了另一个同名的局部视图。它先找到了那个,然后把它渲染出来。有一次我把它拿出来,共享的那一个是唯一存在的,它变得很好。