C# 在ASP.NET C Web应用程序(窗体)的移动版和桌面版之间共享代码

C# 在ASP.NET C Web应用程序(窗体)的移动版和桌面版之间共享代码,c#,asp.net,forms,web-applications,code-behind,C#,Asp.net,Forms,Web Applications,Code Behind,我有一个现有的asp.net C web应用程序,我正在开始开发一个移动版本,方法是创建一个子文件夹mobile并复制我将在移动区域提供的文件夹/文件。我有不同的风格和移动网站地图工作得很好 例如,有许多页面将提供相同的业务流程,但在样式或母版页之上和之外,这两个页面之间的表示层可能会有一些细微的变化。 我想在移动副本和桌面副本之间共享Login.aspx页面的代码隐藏逻辑 我刚刚使用asp.net,所以举个简单的例子就好了。我试图在另一个文件夹中创建一个共享类,但无法正确地引用它并编译而不出错

我有一个现有的asp.net C web应用程序,我正在开始开发一个移动版本,方法是创建一个子文件夹mobile并复制我将在移动区域提供的文件夹/文件。我有不同的风格和移动网站地图工作得很好

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

我刚刚使用asp.net,所以举个简单的例子就好了。我试图在另一个文件夹中创建一个共享类,但无法正确地引用它并编译而不出错


想法?

用鼠标右键单击项目,然后添加ASP.NET文件夹,添加应用程序代码文件夹,并将类放置在那里。之后,您应该能够在整个项目中访问该类

将您的业务逻辑至少分离到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.
 }

除了App_代码之外,将.cs文件放入任何文件夹可能都不是一个好主意。代码隐藏文件.aspx.cs和.aspx.vb是例外。请参阅:有关应用程序代码和其他特殊文件夹的说明。

尝试应用程序代码选项后,我实际使用了应用程序中其他类使用的现有类文件夹。但是我创建的这个类背后的代码无法让系统识别。如果我为这个类创建了一个新的基页,那么就说LoginBase.aspx,并在LoginBase.aspx.cs中添加所有标准代码。然后在/Mobile文件夹中创建一个Login.aspx和另一个Login.aspx。如何让后两个继承LoginBase.aspx.cs代码?非常感谢。我会给它一个try@PGB这对你有用吗?请记住,将答案标记为已接受,以帮助他人我不确定您在可使用的技术类型方面的灵活性,但MVC具有处理web和移动输出的内置功能。此外,MVC本质上将UI与逻辑分离,因此默认情况下,您的web和移动UI将使用相同的代码库。他使用的web表单由标记判断。将现有的web表单站点转换为MVC将是一项相当艰巨的任务。