簡體   English   中英

asp.NET Web 應用程序,如何與所有代碼隱藏文件共享類?

[英]asp.NET Web App, how do I share classes with all code-behind files?

我知道這個網站並不總是歡迎超級基本的新手問題,而且我擔心這些模組可能會像倉鼠上的鷹一樣猛撲到這篇文章上,但我真的被困住了。

我繼承了用 C# 編寫的 asp.NET 應用程序。 它不是一個項目,也不與解決方案相關聯; 它只是 aspx 文件及其關聯的 aspx.cs 代碼隱藏文件的集合。

這是一個編程混亂,我正在嘗試使用 class 對象重寫它(我正在自學這個)。 我的 class 對象工作正常,但我必須將類放在每個代碼隱藏頁面中; 這顯然是不對的。

將我的類放在單個 myClasses.cs 文件中並讓我的其他 aspx.cs 代碼隱藏文件使用它們的最直接方法是什么? 我已經查看了一百個不同的帖子,但我似乎無法解決這個非常簡單的問題。 其中許多涉及解決方案中的項目,但正如我所說,這個應用程序只是一個沒有項目的文件集合。 我試圖在終端中“構建”(我正在使用 VSCode),但它說它找不到項目文件。

看了幾十篇文章,這似乎是一個籠統的答案。 這是來自這里: https://www.codeproject.com/questions/242165/csharp-asp-net-sharing-methods-between-classes

一般形式為:

My class:
public class BasePage : System.Web.UI.Page
{
public int YourMethod(string str)
    {
        int someNum = 1;
        return someNum;
    }
}

然后在其他代碼隱藏頁面中,訪問它:

YourMethod("something")

有時 Intellisense 似乎在我編碼時看到 class,但 web 頁面顯示它看不到代碼 object。

任何幫助表示贊賞。

好吧,您創建的簡單 class - 不在特定頁面的代碼中?

只需將 class 添加到項目中 - 創建一個名為 MyCode 的文件夾。

The only issue is the class in question a class that you are required to create a new instance of to use in code, or is the class just some helper and utility routines - that can be a static class, since it just a code library you想到處使用。

因此,右鍵單擊項目探索,然后選擇添加 asp.net 文件夾:

例如這個:

在此處輸入圖像描述

現在,如果 app_code 已經存在,那么您不需要創建該文件夾,並且可以簡單地將您的類添加到該文件夾 - 它們將是全局的。

所以,然后這個 - 右鍵單擊 app_code,並添加一個 class:

例如這個:

在此處輸入圖像描述

到那時,您可以創建一個 class - 一個 static 一個,用於您的流派例程和我們擁有的代碼的大雜燴。 還有可能混合了屬性和代碼的類——你當然必須創建一個實例。

所以,我有一個系統范圍的 class - static - 真的相當於我一直需要和使用的一般例程的代碼模塊。

因此,例如,我們經常必須獲得一個數據表——無需一遍又一遍地重新鍵入那種代碼。

所以,在我的代碼“通用”class 中,我有這個(以及更多)。

public static class General

{ 

    public  static DataTable MyRst(string strSQL)
    {
        DataTable rstData = new DataTable();
        using (SqlConnection conn = new SqlConnection(strCon()))
        {
            using (SqlCommand cmdSQL = new SqlCommand(strSQL, conn))
            {
                cmdSQL.Connection.Open();
                rstData.Load(cmdSQL.ExecuteReader());
            }
        }
        return rstData;
    }

所以,現在在 web 頁面上,我可以說像這樣放入網格視圖:

        <asp:GridView ID="GridView1" runat="server">

        </asp:GridView>

現在我的頁面加載代碼是這樣的:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
        LoadGrid();
}

void LoadGrid()
{
    string strSQL =
        @"SELECT FirstName, LastName, HotelName, Description 
        FROM tblHotelsA
        ORDER BY HotelName";

    DataTable rstData = General.MyRst(strSQL);
    GridView1.DataSource = rstData;
    GridView1.DataBind();

我們得到了這個:

在此處輸入圖像描述

因此,由於它是 static class - 那么我不必在使用它之前創建該 class 的實例 - 它只是一堆方便的代碼例程的全局代碼 - 它們是全局的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM