如何将方法(类)传递给ApiController?

时间:2015-05-15 09:10:00

标签: c# asp.net-web-api

我有一个名为Query的类,它包含一个使用SQL查询调用数据的函数。

        public static UserDetails[] BindDatatable()
    {
        DataTable dt = new DataTable();
        List<UserDetails> details = new List<UserDetails>();

        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["###"].ConnectionString))
        {
            using (SqlCommand cmd = new SqlCommand("select top 3 Deal, [property], [event] from [dbo].[Database_CRE_Events]", con))
            {
                con.Open();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);
                foreach (DataRow dtrow in dt.Rows)
                {
                    UserDetails user = new UserDetails();
                    user.Deal = dtrow["Deal"].ToString();
                    user.LoanProperty = dtrow["property"].ToString();
                    user.Events = dtrow["event"].ToString();
                    details.Add(user);
                }
            }
        }
        return details.ToArray();
    }

我想知道如何将此查询传递到我的WebAPI控制器中?这是可能的,因为我在网上找不到很多例子来进一步指导我这个版本。

public class TestController : ApiController
{

    private cdwEntities db = new cdwEntities();

    private Query respository;

    [HttpGet]
    public HttpResponseMessage getData()
    {
       // Not sure how to pass method from Query class here?         
    }
}

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

首先,为什么static中的方法?

public static UserDetails[] BindDatatable()

所以如果它是静态的那么你必须像这样消耗它。

var result = Query.BindDatatable();

但如果这是一个错误,那么你必须像这样使用它,你当前的实现已经是正确的,所有你需要做的就是删除 static修饰符,然后调用它respository实例。

[HttpGet]
public HttpResponseMessage getData()
{
   var result = repository.BindDatatable();
}

答案 1 :(得分:1)

这很简单,因为你的方法是静态的。对静态方法的调用使用以下语法

Classname.Methodname();

在您的情况下Query.BindDatatable();

您的代码可以修改如下

public class TestController : ApiController
{

    private cdwEntities db = new cdwEntities();

    private Query respository;

    [HttpGet]
    public HttpResponseMessage getData()
    {
       //Calling the static method in Query class
       var details = Query.BindDatatable();

       //Your code here
    }
}