C# MVC4渲染视图缩放不考虑移动视图
我正在为asp.net MVC4站点构建移动视图,遇到了一个问题。在很多地方,我们有一种方法可以将视图转换为字符串,但这种方法似乎不适用于displaymodes,因此总是可以找到默认视图。例如,index.cshtml而不是index.mobile.cshtml 有什么想法可以让这段代码尊重移动显示模式吗C# MVC4渲染视图缩放不考虑移动视图,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我正在为asp.net MVC4站点构建移动视图,遇到了一个问题。在很多地方,我们有一种方法可以将视图转换为字符串,但这种方法似乎不适用于displaymodes,因此总是可以找到默认视图。例如,index.cshtml而不是index.mobile.cshtml 有什么想法可以让这段代码尊重移动显示模式吗 public string RenderViewToString(string viewName, object model) { ViewData.Model =
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";
}
你需要传递一个显式参数来显示移动视图,它不知道它是否是移动的。我也这么想,但不知道在哪里传递这个参数。到目前为止,我最好的解决方案是,在viewname中,确保我首先尝试查找移动版本,如果找不到,则返回默认版本。但是感觉不太对。在上面的方法调用之前,您需要创建一些东西,viewname应该是mobile或在对象中(如果是viewmodel或其他东西,则创建一个属性,可能称为IsMobile,这取决于它是否是mobile,并相应地进行操作)。好的,谢谢,这也是我想到的。我只是希望有更好的解决办法:)