我正在为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";
}