如何从控制器调用方法- asp.net web api

本文关键字:asp net web api 方法 控制器 调用 | 更新日期: 2023-09-27 18:05:27

我的任务是创建服务(使用asp.net api),并将其用于android应用程序。

我从来没有做过这样的事情,所以我一开始就有问题。(

首先,我用几个类创建了类库。其次,我创建了asp.net web应用程序,并引用了类库。

我的问题是我不知道如何从控制器访问方法。

下面是代码:

控制器类:

  public class ValuesController : ApiController
{
    // GET api/<controller>
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }
    // GET api/<controller>/5
    public string Get(int id)
    {
        return "value";
    }
    // POST api/<controller>
    public void Post([FromBody]string value)
    {
    }
    // PUT api/<controller>/5
    public void Put(int id, [FromBody]string value)
    {
    }
    // DELETE api/<controller>/5
    public void Delete(int id)
    {

    }
    public List<BuzzMonitor.Web.Message> Search()
    {
        MessageHandler mh = new MessageHandler();
        List<BuzzMonitor.Web.Message> messages = null;
        messages = mh.Search(string text, DateTime dateFrom, DateTime dateTo, List<int> themeIds, List<int> sourceIds);
        return messages;
    }

}

MessageHandler类:

 public class MessageHandler
{
    private List<Message> _dummyMessages = new List<Message>()
        {
            new Message(){
                MessageId = 1,
                CreatedDate = new DateTime(2014, 5, 27),
                Text = "Srpska vodoprivreda...",
                Autor = "Marko Markovic",
                Source = "Twitter"
            },
            new Message(){
                MessageId = 2,
                CreatedDate = new DateTime(2014, 5, 27),
                Text = "Aerodrom Beograd...",
                Autor = "Zoran Zoric",
                Source = "B92"
            }
        };
    public List<Message> GetLatestMessages(int nrMessagesToReturn)
    {
        List<Message> retVal;
        retVal = this._dummyMessages.GetRange(0, nrMessagesToReturn);
        return retVal;
    }
    public List<Message> Search(string text, DateTime dateFrom, DateTime dateTo, List<int> themeIds, List<int> sourceIds, int pageIndex, int pageSize)
    {
        List<Message> retVal;
        retVal = this.Search(text, dateFrom, dateTo, themeIds, sourceIds);
        if (retVal != null && retVal.Count > 0)
        {
            retVal = retVal.GetRange(pageIndex * pageSize, pageSize);
        }
        return retVal;
    }
    public List<Message> Search(string text, DateTime dateFrom, DateTime dateTo, List<int> themeIds, List<int> sourceIds)
    {
        List<Message> retVal = null;
        retVal = this._dummyMessages.Where(m => m.Text.IndexOf(text, StringComparison.OrdinalIgnoreCase) > -1 &&
            m.CreatedDate >= dateFrom &&
            m.CreatedDate < dateTo &&
            (themeIds == null || themeIds.Count == 0 || (themeIds.Contains(m.ThemeId))) &&
            (sourceIds == null || sourceIds.Count == 0 || (sourceIds.Contains(m.SourceId)))).ToList<Message>();
        return retVal;
    }

}

消息类:

    public class Message
{
    public int MessageId { get; set; }
    public DateTime CreatedDate { get; set; }
    public string Text { get; set; }
    public string Autor { get; set; }
    public string Source { get; set; }
    public int ThemeId { get; set; }
    public int SourceId { get; set; }
}

好了,还有一个,我想访问MessageHandler类它是来自控制器的方法搜索,但我不知道怎么做,因为当我输入MessageHandler和点时,我不能再输入任何东西了

谢谢大家的帮助!

如何从控制器调用方法- asp.net web api

你的问题是你在调用你的方法时指示你的参数类型。只在定义方法时指明类型:

messages = mh.Search(string text, DateTime dateFrom, DateTime dateTo, List<int> themeIds, List<int> sourceIds);
应:

messages = mh.Search(text, dateFrom, dateTo, themeIds, sourceIds);

然而,你仍然有另一个问题,这些变量不存在。他们从哪里来?我假定您希望将它们传递给Web API操作方法。