Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC4渲染视图缩放不考虑移动视图_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# MVC4渲染视图缩放不考虑移动视图

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 =

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

你需要传递一个显式参数来显示移动视图,它不知道它是否是移动的。我也这么想,但不知道在哪里传递这个参数。到目前为止,我最好的解决方案是,在viewname中,确保我首先尝试查找移动版本,如果找不到,则返回默认版本。但是感觉不太对。在上面的方法调用之前,您需要创建一些东西,viewname应该是mobile或在对象中(如果是viewmodel或其他东西,则创建一个属性,可能称为IsMobile,这取决于它是否是mobile,并相应地进行操作)。好的,谢谢,这也是我想到的。我只是希望有更好的解决办法:)