我相信 MVC 支持浏览器嗅探和根据类型和/或分辨率切换 View 。在我们团队正在进行的关于使用 Webforms 还是 MVC(版本 4.0)启动新项目的争论中,Webforms 是否有这种支持?如果没有,我们是否只使用 css 媒体标签和 Twitter Bootstrapper 来提供灵活的布局?我们的一些应用程序针对固定显示器,但其他部分应该适合平板电脑和手机。我想知道如果我们使用 WebForms,这是否会变得更困难。
此外,MVC 允许您完全控制标记,因此对 jQuery 非常友好。鉴于我们无法像服务器控件那样控制标记,WebForms jQuery 友好吗?
还有其他我没有想到的类似问题可能会产生影响吗?
最佳答案
较新版本的 ASP.NET Webform(尤其是 4.0 及以上版本)对于根据访问网站的特定设备提供内容更加“友好”,并且进行了改进,允许渲染的输出更加“干净”由服务器端控件生成的标记。
当然,MVC 也是如此,但不要忘记 ASP.NET MVC is written on top of the same ASP.NET runtime that ASP.NET Webforms uses 。因此,最初通过 MVC 提供的许多好处现在也可用于 Webform。
微软的ASP.NET site有一个非常好的白皮书, How To: Add Mobile Pages to Your ASP.NET Web Forms / MVC Application ,详细解释了诸如 Request.Browser.IsMobileDevice
之类的功能如何& Request.Browser.ScreenPixelsWidth
(底层 ASP.NET 运行时的两个基本功能因此同样适用于 WebForms 和 MVC)可用于检测当前访问网站的设备的功能。如果您需要有关设备的非常详细的信息,那么您需要集成类似 WURFL 的信息。无论您使用的是 WebForms 还是 MVC,都可以进入您的网站。此外,如果您需要在具有不同外形尺寸和纵横比的设备上进行非常具体的布局,则需要提供专门设计并针对这些设备的页面(MVC View 或 ASP.NET 网页)。
关于在 ASP.NET WebForms 中干净地使用 jQuery 的能力,从 ASP.NET WebForms 4.0 开始,您有能力严格控制 ClientID
应用于渲染标记中的 DOM 元素的值。有一个名为 ClientIDMode
的新属性那makes it very easy确保您拥有元素 ID 的已知值,从而更轻松地使用 jQuery。将 ClientIDMode
的值设置为 static
或 predictable
值将为您的元素提供更易于使用的 ID 值在 jQuery 中。不过,这里需要注意的一件事是,由于 ASP.NET 运行时仍在生成 HTML 元素并为其 ID 分配值,you can still end up with duplicated ID values ,特别是在使用复合控件时(即诸如 GridView
控件之类的控件,它具有自己的 ID 值,但其本身由许多组成控件/元素组成 - 当然每个控件/元素都有自己的 ID)。
总体而言,在 ASP.NET WebForms 和 ASP.NET MVC 之间进行选择可能取决于您最熟悉和最高效的方式。就个人而言,我会使用 MVC,因为我喜欢它的可测试性和比 WebForms 更好的关注点分离的额外好处,尽管必须说 ASP.NET WebForms 版本 4.0+ 比以前的版本更强大并且有很大改进 - 您甚至可以有MVC-style routing, extensionless URL's and more现在使用 ASP.NET WebForms。
关于jquery - WebForms(相对于 MVC)4.0 版对移动设备和 jQuery 的友好程度如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13633003/