2016-05-04 8 views
0

私は通常、この種のプロジェクトを行うUmbracoの範囲外で知識を拡張したいので、単純なMVCプロジェクトを設定しています。WebApiメソッドに渡されるパラメータは、メソッド本体に到達するとnullです。

私はWebApiに精通していますが、このインスタンスでは動作しないようです。

私は、次のJavaScriptで初期化された私の見解で日付ピッカーを持っている:

$('#id-tour_0').datepicker({ 
       changeMonth: true, 
       changeYear: true, 
       showOn: "button", 
       buttonImage: "Content/themes/base/images/icon_calendar.gif", 
       buttonImageOnly: true, 
       onSelect: function (date) { 
        $.ajax({ 
         url: '/api/tour/requesttours', 
         type: 'POST', 
         data: JSON.stringify(date), 
         dataType: 'json', 
         success: function (data){ 
          console.log(data); 
         } 
        }); 
       } 
      }); 

日付ピッカーで選択を行う際に、次のWEBAPI方法この後、ポスト:

public class TourController : ApiController 
    { 
     [System.Web.Http.AcceptVerbs("GET", "POST")] 
     public string RequestTours([FromBody] String request) 
     { 
      return request; 
     } 
    } 

付きをWebApiConfig.csの設定は次のようになります。

public static void Register(HttpConfiguration config) 
     { 
      config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{action}/{id}", 
       defaults: new { id = RouteParameter.Optional } 
      ); 
     } 

ただし、私のWebApiメソッドをkpointすれば、そのリクエストがnullになることがわかります。なぜこれが、私はそれが私のJavascriptによって掲示される値を受け取るために得ることができますか?

N.B.私はFirebugのでcheckeedていると、正しい日付が

だからのようなオブジェクトを作成

enter image description here

+0

データの値を設定する方法はほとんどありません。送信する場合は、データがある場合はパラメータ名で指定する必要があります。 '{request: "' + date.Date + '"}' –

答えて

2

ポストパラメータ名は、あなたのクラスファイル内の関数の引数の名前にマップする必要があります方法に正しく掲載されていますこの

var dateX = new Object(); 
dateX.request = date.Date; 

は、その後、あなたのAJAX呼び出しでこのオブジェクトを送信

data: JSON.stringify(dateX), 

または直接、私は次のことをやってしまったこの

data: '{request:"'+ date.Date +'"}' 
+0

これはまったく動作しません。 – jezzipin

0

ようなオブジェクト渡し:

$('#id-tour_0').datepicker({ 
       changeMonth: true, 
       changeYear: true, 
       showOn: "button", 
       buttonImage: "Content/themes/base/images/icon_calendar.gif", 
       buttonImageOnly: true, 
       onSelect: function (date) { 
        $.ajax({ 
         url: '/api/tour/requesttours', 
         type: 'POST', 
         data: {Date: date}, 
         dataType: 'json', 
         success: function (data){ 
          console.log(data); 
         } 
        }); 
       } 
      }); 

をそれから私は私がリクエストパラメータをマッピングされた私のC#コードで新しいオブジェクトを作成しました

public class TourController : ApiController 
    { 
     public string RequestTours([FromBody] DateRequest request) 
     { 
      return request.Date; 
     } 
    } 

    public class DateRequest 
    { 
     public string Date { get; set; } 
    } 
関連する問題