ASP.NET表单应用程序
本文关键字:应用程序 表单 NET ASP | 更新日期: 2023-09-27 18:12:48
我用默认数据创建了一个新项目。
所以我有一个移动版主页和一个桌面版主页。
如何使1页在桌面和移动设备上看起来不同?以某种方式创建两个默认值。aspx页面?一个用于手机,一个用于桌面。
我试过使用contentplaceholder:
桌面:<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="<Projectname>.SiteMaster" %>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<asp:ContentPlaceHolder ID="MainContent" runat="server"></asp:ContentPlaceHolder>
</body>
</html>
移动:<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.Mobile.master.cs" Inherits="<Projectname>.Site_Mobile" %>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<asp:ContentPlaceHolder ID="MobileMainContent" runat="server"></asp:ContentPlaceHolder>
</body>
</html>
default . aspx:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="<Projectname>._Default" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
Hello, i'm desktop!
</asp:Content>
<asp:Content ID="MobileBodyContent" ContentPlaceHolderID="MobileMainContent" runat="server">
Hello, i'm mobile!
</asp:Content>
当我启动默认时。从桌面浏览器的aspx,它提示MobileMainContent没有找到。但是在WP模拟器上,我得到MainContent没有找到;
我在移动版和桌面版都做了修改,但隐藏了另一个块:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.Mobile.master.cs" Inherits="<Projectname>.Site_Mobile" %>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<asp:ContentPlaceHolder ID="MainContent" runat="server" Visible="false"></asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="MobileMainContent" runat="server"></asp:ContentPlaceHolder>
</body>
</html>
和所有工作。这是实现我想要的目标的正确方法吗?
Web表单在这方面很棘手。如果你目前取得的成果是有效的,它可能被认为是一个合适的方法。以下是我的想法关于我能想出的解决方案:
-
您自己的方法
- 如果你的桌面应用程序和移动应用程序有相同的页面/组件逻辑结构,那么很好。这意味着您的母版页需要与它们公开的占位符名称相同。
- 坏如果你需要在移动页面中不同数量的控件。您最终将放置在桌面或移动设备中都不会使用的占位符,并且其他开发人员或您自己在相当长的时间后维护这些母版页可能会变得混乱。这种方法最糟糕的地方在于,你的手机版本将与桌面版本绑定在一起,这可能会削弱手机UI的增强,如果它们会破坏桌面布局的话。
-
使用响应式设计
许多web UI框架都指向响应UI(例如bootstrap)。这个想法是,你设计html布局的方式,使相同的html代码看起来不同,取决于它是从哪个设备浏览。这个魔术完全是用CSS(媒体查询)完成的,如果需要的话,还需要一些JS。- 如果你想在不同的平台有相似的页面布局和控制层次。在使用ASP.NET时,您最终将使用单个母版页,而不会考虑不同的平台。此类框架的大多数解决方案都涵盖了许多UI组件布局,有在线示例和教程。一般来说,你会有很好的社区支持。
- 坏如果你/你的团队没有很好的CSS/JS知识和/或时间来理解响应式UI的概念和支持它的框架。如果你的桌面和移动版本在某些时候会有根本的不同(或者将来会有),你可能想要拆分UI——见下一点。
-
分隔平台母版页
一般来说,考虑将移动UI和桌面UI分开。当移动设备的使用率还在接近市场份额时,我个人就曾这样做过,而且大多数web开发仍然是面向桌面的。我看不出今天不使用相同技术的理由。这种方法的关键在于,您需要在编程级别上很好地将UI项组件化。例如,您可以使用用户控件来表示UI组件。经典ASP中的用户控件。. NET表单很好,因为它们将某些UI部分与其代码隐藏逻辑配对。当你需要在移动端和桌面端都拥有相同的控件时,你可以用代码隐藏的逻辑创建一个基抽象类,创建从同一个基类继承的单独的UserControl类,但暴露不同的用户界面元素,并将输入事件挂钩到基类完成其工作所需的内容。如果你坚持MVP/MVVM设计模式,后者工作得非常好。这个方法是- 如果你需要独立的外观和感觉,组件的安排,甚至是移动端和桌面端完全不同的UI组织。它将允许团队成员并行开发两个版本,甚至是单独的团队。您将能够在不同平台之间重用类似的代码。
- 坏,因为你将不得不拆分平台开发。这意味着你必须弄清楚桌面版本和移动版本何时加载给用户。你可能需要加倍UI工作,以防桌面组件在移动设备上看起来完全不同。
我想这一切都取决于你的选择。你可能会坚持自己的方式,采取另一种方法或结合任何你能做到的。我不想把这个话题讲得很累,所以除了上面的解决方案,其他的可能会很方便。