C# 在webforms aspx.cs文件ASP.NET Web forms中使用存储库类的正确方法

C# 在webforms aspx.cs文件ASP.NET Web forms中使用存储库类的正确方法,c#,asp.net,asp.net-mvc,webforms,repository,C#,Asp.net,Asp.net Mvc,Webforms,Repository,在ASP.NET Web forms aspx.cs文件中的代码隐藏文件中实例化存储库类实例的正确方法是什么。 我试着用MVC控制器的方法来做,但是我好像错过了什么。 这是我到目前为止尝试过的,但没有成功 public partial class Ajax : System.Web.UI.Page { private Repository _repo; public Ajax() { _repo = new Repository(); }

在ASP.NET Web forms 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需要对象引用。\u 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方法必须是静态的。他们无法访问实例成员。您可以在静态方法中获取存储库

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

或者更好的办法是,放弃WebMethod,转而在项目中使用依赖项注入。

问题出在哪里?根据visual studio,这不会在_repo上生成并给出引用错误,因为它不是对象的实例。将其放入使用块中是有效的,但这正是我试图避免的。编辑您的问题,以便其他读者清楚地了解实际问题。抱歉,已修复。问题在哪里?根据visual studio,这不会在_repo上生成并给出引用错误,因为它不是对象的实例。把它放在一个使用块中是有效的,但这正是我试图避免的。编辑你的问题,让其他读者清楚实际的问题。很抱歉,修复了。