MVC4 RenderViewToString不尊重移动视图



我正在为ASP.NET MVC4站点构建移动视图,并遇到了问题。我们有很多地方可以将视图转换为字符串的方法,但是此方法似乎与DisplayModes不起作用,因此总是找到默认视图。例如。index.cshtml而不是index.mobile.cshtml。

有什么想法使此代码尊重移动显示模式?

public string RenderViewToString(string viewName, object model)
    {
        ViewData.Model = model;
        using (var sw = new StringWriter())
        {
            var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
            if (viewResult.View == null)
            {
                var message = String.Format("View '{0}' not found. Searched in the following locations {1}.",
                    viewName, String.Join(", ", viewResult.SearchedLocations));
                throw new Exception(message);
            }
            var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
            viewResult.View.Render(viewContext, sw);
            viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
            return stripWhitespaceRx.Replace(sw.GetStringBuilder().ToString(), " ").Trim();
        }
    }

初始化带有预期视图的参数" viewName"。

例如,在调用RenderviewToString之前,请指定请求对象的基于ViewName的用户代理。

if(Request.Browser.IsMobileDevice)
{
  viewName = "~/Views/index.mobile.cshtml";
}
else
{
  viewName = "~/Views/index.cshtml";
}

最新更新