在.NET控制器中访问查询参数

时间:2017-09-14 17:58:09

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

我在jQuery中有这个功能

var uri = "api/queries";

function test(){
    var params = {
        origin: $('#depair').val(),
        destination: $('#destair').val(),
        departure_date: $('#depdate').val(),
        currency: $('#currency').val(),
    }
    $.getJSON(uri, params)
        .done(function (data) {
            console.log(data);
    });
}

将请求发送到此Controller

public class QueriesController : ApiController
{
    [HttpGet]
    public string GetInfo()
    {
        return "blah";
    }
}

所以,请求看起来像这样

http://localhost:55934/api/queries?origin=&destination=&departure_date=&currency=

如何从控制器GetInfo方法中访问请求的参数?

3 个答案:

答案 0 :(得分:2)

您可以使用Model Binding。首先像这样创建一个classViewModel):

public class Querie
{
    public string Origin { get; set; }
    public string Destination { get; set; }
    public string Departure_date { get; set; }
    public string Currency { get; set; }
}

然后将此类作为参数包含在您的方法中,如下所示:

public class QueriesController : ApiController
{
    [HttpGet]
    public string GetInfo(Querie querie)
    {
        //querie.Origin
        return "blah";
    }
}
  

模型绑定将数据从HTTP请求映射到操作方法参数。参数可以是简单类型,例如字符串,整数或浮点数,或者它们可以是复杂类型。这是MVC的一个很棒的功能,因为无论数据的大小或复杂程度如何,将传入数据映射到对应方都是一种经常重复的方案。

答案 1 :(得分:1)

您可以将它们作为参数包含在您的函数中。

[HttpGet]
public string GetInfo(string origin, string destination, string departure_date, string currency)
{
    return "blah";
}

答案 2 :(得分:0)

var origin = Request.QueryString["origin"];

用您的参数替换“origin”。