在没有代码复制的情况下为同一页面使用多个视图

时间:2014-02-28 14:41:04

标签: c# asp.net-mvc asp.net-mvc-4

在MVC4中,我试图显示最终用户正在访问它的环境的View。我通过访问user agent字符串并返回相关{{1}来实现此目的。 }。

控制器:

View

Android和iPad string userAgent = Request.UserAgent.ToLower(); if (userAgent.Contains("ipad")) { viewPath = "~/Views/Home/Index.Ipad.cshtml"; } else if (userAgent.Contains("android")) { viewPath = "~/Views/Home/Index.Android.cshtml"; } else { viewPath = "~/Views/Home/Index.cshtml"; } 不会有重大差异,因为渲染差异会导致微小的调整。主Views将包含桌面屏幕允许的更多数据。

这将导致大量代码复制。需要在三个Index.cshtml中复制一个更改。是否有更容易/更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

使用部分视图来处理公共区域的内容会有所帮助 - 因为视图内部的不同会有助于缓解这种情况。

如果可能,渲染差异应该在CSS中处理,以减少任何自定义的需要,但是!