2017-09-14 7 views
0

私はjQueryのアクセスするクエリパラメータ

この Controllerにリクエストを送信し
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); 
    }); 
} 

でこの機能を持っている:

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

ので、要求はこの

http://localhost:55934/api/queries?origin=&destination=&departure_date=&currency=のように見えます

どのように私は、コントローラ内からクエストGetInfo方法?

答えて

2

Model Bindingを使用できます。まず、このようclassViewModel)を作成します。アクションメソッドのパラメータにHTTPリクエストから

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

モデルバインディングマップデータ:

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

次に、このようなあなたのメソッドへのパラメータとして、このクラスが含まれています。パラメータは、文字列、整数、浮動小数点数などの単純な型でも、複雑な型でも構いません。これは、データのサイズや複雑さにかかわらず、入力データを相手にマッピングすることが頻繁に繰り返されるシナリオなので、MVCの優れた機能です。

+0

@Fasteonモデルバインディングを使用している場合は、Include関数 '[Bind(Include =" Prop1、Prop2 ")]'を確認してください。特定のパラメータが拘束されないようにするには、これを使用します。これはセキュリティ上の目的に適しています。 –

+0

@DavidLeeドメインクラスやビジネスオブジェクトやエンティティを使用しない 'ViewModel'クラスを作成し、あなたが指摘したように* Mass Assignment *を既に避けているので、' Bind'を使う必要はないと思います。 –

+0

@SAkbariはそこに同意します。彼がプロジェクトの他の領域でこれを使い始める場合に備えて、それを指摘したいだけです。 –

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

"origin"をパラメータに置き換えます。

1

関数のパラメータとして含めることができます。

[HttpGet] 
public string GetInfo(string origin, string destination, string departure_date, string currency) 
{ 
    return "blah"; 
} 
関連する問題