簡體   English   中英

在webforms aspx.cs文件ASP.NET Web表單中使用存儲庫類的正確方法

[英]Proper way to use a repository class in an webforms aspx.cs file ASP.NET Web forms

在ASP.NET Web窗體的aspx.cs文件中,在代碼隱藏文件中實例化存儲庫類的實例的正確方法是什么。 我試過這樣做就像你在MVC控制器中那樣做,但似乎我錯過了一些東西。 這是我到目前為止沒有運氣的嘗試。

public partial class Ajax : System.Web.UI.Page
{
    private Repository _repo;

    public Ajax()
    {
        _repo = new Repository();
    }

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    [System.Web.Services.WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static string CreateForm(object data)
    {
        _repo.Insert(data);
    }
}

public class Repository()
{
    public void Insert(object data)
    {
         //do something.
    }
}

問題是當我嘗試構建它時,visual studio給我以下錯誤:“非靜態字段,方法或屬性Ajax._repo需要一個對象引用”什么是給靜態webmethod訪問的正確方法Repository類的實例?

編輯:要澄清,在靜態方法中使用存儲庫實例的最佳方法是什么?

Web方法必須是靜態的。 他們無法訪問實例成員。 您可以在靜態方法中獲取存儲庫。

[System.Web.Services.WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string CreateForm(object data)
{
    Repository repo = new Repository();
    repo.Insert(data);
}

或者更好的是,放棄WebMethod,而是開始在項目中使用Web API ,使用依賴注入。

暫無
暫無

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

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