我正在为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();
}
}
答案 0 :(得分:0)
使用预期视图初始化参数“viewName”。
例如,在调用RenderViewToString之前,请指定Request对象的基于viewName的USER AGENT。
if(Request.Browser.IsMobileDevice)
{
viewName = "~/Views/index.mobile.cshtml";
}
else
{
viewName = "~/Views/index.cshtml";
}