在WebForms aspx.cs文件ASP.NET Web表单中使用存储库类的正确方法



在asp.net Web form 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访问存储库类实例的正确方法是什么?

编辑:要澄清,使用静态方法中存储库的实例的最佳方法是什么?

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,使用依赖项注入。

最新更新