2013-06-04 29 views
1

我有一個現有的asp.net C#web應用程序,我開始通過創建一個子文件夾「Mobile」開發一個移動版本並複製我將在移動領域提供的文件夾/文件。對於移動設備的不同風格和網站地圖,我可以很好地工作。在ASP.NET C#Web應用程序的移動和桌面版本之間共享代碼(表單)

舉例來說,有很多頁面可以提供相同的業務流程,但是對於兩者之間的表現層可能會有一些細微的變化,超出了樣式或母版頁的範圍。 我想分享移動副本和桌面副本之間的Login.aspx頁面的邏輯背後的代碼。

我是相當新的使用asp.net,所以一個簡單的例子會很好。我試圖在另一個文件夾中創建一個共享類,但一直無法正確引用它並編譯沒有錯誤。

想法?

+0

我不確定您可以使用的技術類型的靈活性,但是MVC具有內置的Web和移動輸出處理能力。另外,就其本質而言,MVC將UI與邏輯分開,因此默認情況下,您的Web和移動UI將使用相同的代碼庫。 –

+0

他使用網頁表單來判斷標籤。將現有的Web表單網站轉換爲MVC將是一項相當艱鉅的任務。 – mason

回答

0

用鼠標右鍵點擊該項目,然後Add ASP.NET Folder,添加「App_Code」文件夾並將該類放置在那裏。之後,您應該可以在整個項目中訪問該課程

+0

我也這樣做過,沒有運氣引用類 – PGB

0

將您的業務邏輯分爲至少一個App_Code文件夾。但最好把它移到它自己的類庫項目中。然後將您的網站/ Web應用程序項目的引用添加到類庫項目中。以下是如何做到這一點:在解決方案資源管理器中右鍵單擊解決方案,然後轉到添加>新建項目。從這裏添加一個類庫項目到解決方案。然後右鍵單擊您的Site項目,單擊添加引用,確保您位於項目選項卡上,然後選擇您之前創建的類庫。您的業​​務邏輯放在類庫項目中,而您的站點特定邏輯放在網站項目中。您需要將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)是例外。看到這個:http://www.codeproject.com/Articles/31557/A-Beginner-s-Guide-to-ASP-NET-Application-Folders關於App_Code和其他特殊文件夾的解釋。

+0

嘗試App_Code選項後,我實際上使用了現有的「Classes」文件夾,這些文件夾被我的應用程序中的其他類使用。但是,我創建的類背後的代碼無法讓系統識別。 – PGB

+0

如果我爲此創建了一個新的基本頁面(比如LoginBase.aspx)並在LoginBase.aspx.cs中添加了所有的標準代碼。然後在/ Mobile文件夾中創建一個Login.aspx和另一個。如何讓後兩者繼承LoginBase.aspx.cs代碼? – PGB

+0

@PGB我用更多的例子更新了我的答案。 – mason

相關問題