【问题标题】:Sharing Code Between Mobile and desktop version of ASP.NET C# Web Application (Forms)在移动版和桌面版 ASP.NET C# Web 应用程序(表单)之间共享代码
【发布时间】:2013-06-04 00:57:10
【问题描述】:

我有一个现有的 asp.net C# Web 应用程序,我开始通过创建子文件夹“Mobile”并复制我将在移动区域提供的文件夹/文件来开发移动版本。我可以很好地处理不同风格的移动站点地图。

例如,有许多页面将提供相同的业务流程,但在样式或母版页之外,两者之间的表示层可能会有一些细微的变化。 我想在移动副本和桌面副本之间共享 Login.aspx 页面逻辑背后的代码。

我是使用asp.net 的新手,所以一个简单的例子会很好。我试图在另一个文件夹中创建一个共享类,但无法正确引用它并编译没有错误。

想法?

【问题讨论】:

  • 我不确定您对可以使用的技术类型的灵活性,但 MVC 具有处理 Web 与移动输出的内置功能。此外,就其本质而言,MVC 将 UI 与逻辑分开,因此默认情况下,您的 Web 和移动 UI 将使用相同的代码库。
  • 从标签来看,他正在使用网络表单。将现有的 Web 表单站点转换为 MVC 将是一项艰巨的任务。

标签: c# asp.net forms web-applications code-behind


【解决方案1】:

鼠标右键单击项目,然后Add ASP.NET Folder,添加“App_Code”文件夹并将类放在那里。之后,您应该能够在整个项目中访问该类

【讨论】:

    【解决方案2】:

    至少将您的业务逻辑分离到 App_Code 文件夹中。但最好将其移动到自己的类库项目中。然后将您的网站/Web 应用程序项目中的引用添加到类库项目中。操作方法如下:在解决方案资源管理器中右键单击您的解决方案,转到添加 > 新项目。从此处将类库项目添加到解决方案。然后右键单击您的站点项目,单击添加引用,确保您在项目选项卡上,然后选择您之前创建的类库。您的业​​务逻辑放在类库项目中,您的特定于站点的逻辑放在网站项目中。您需要在类中添加 Using 语句或使用完整的命名空间语法来访问类库中的类。

    在您的站点特定逻辑中,如果页面共享相同的页面特定逻辑,您可以让各个页面继承自公共基类。

     public partial class _Default : System.Web.UI.Page
     {
     //This is all the code behind logic for Default.aspx. This code is in Default.aspx.cs. Notice how it is inheriting from System.Web.UI.Page directly.
     }
    

    改成这个...

     public class BasePage : System.Web.UI.Page
     {
     //code common to multiple pages goes here. This file (BasePage.cs) goes in your App_Code folder.
     }
    

    还有这个……

     public class _Default : BasePage
     {
     //Now your default page inherits from BasePage class, and therefore it indirectly inherits from System.Web.UI.Page.
     }
    

    将 .cs 文件放入除 App_Code 之外的任何文件夹中可能不是一个好主意。代码隐藏文件(.aspx.cs 和 .aspx.vb)是例外。有关 App_Code 和其他特殊文件夹的说明,请参见:http://www.codeproject.com/Articles/31557/A-Beginner-s-Guide-to-ASP-NET-Application-Folders

    【讨论】:

    • 在尝试了 App_Code 选项后,我实际上使用了一个现有的“类”文件夹,该文件夹被我的应用程序中的另一个类使用。但是我创建的这个类后面的代码我无法让系统识别。
    • 如果我为此创建一个新的基本页面(比如 LoginBase.aspx)并在 LoginBase.aspx.cs 中添加所有标准代码。然后在 /Mobile 文件夹中创建一个 Login.aspx 和另一个。如何让后两者继承 LoginBase.aspx.cs 后面的代码?
    • 非常感谢。会试一试
    • @PGB 这最终对你有用吗? (记得将答案标记为已接受以帮助他人)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    相关资源
    最近更新 更多