2014-01-20 16 views
8

Web APIを呼び出す必要があります。このWeb APIメソッドは、2つのパラメータを受け入れる1つはenum型であり、もう1つはintです。私はこのAPIをAjax Jqueryを使って呼び出す必要があります。 enumパラメータを渡す方法。Ajax JqueryからMVC Webアプリケーションへenumパラメータを渡すweb api

APIコード

[HttpGet] 
public HttpResponseMessage GetActivitiesByType(UnifiedActivityType type, int pageNumber) 
{  
    var activities = _activityService.GetAllByType(type, pageNumber); 

    return Request.CreateResponse(HttpStatusCode.OK, activities); 
} 

私のAjaxの呼び出しコード:

var jsonData = { 'type': 'Recommendation', pageNumber: 0 }; 

$.ajax({ 
    type: 'get', 
    dataType: 'json', 
    crossDomain: true, 
    url: CharismaSystem.globaldata.RemoteURL_ActivityGetAllByType, 
    contentType: "application/json; charset=utf-8", 
    data: jsonData, 
    headers: { "authorization": token }, 
    error: function (xhr) { 
     alert(xhr.responseText); 
    }, 
    success: function (data) { 
     alert('scuess'); 
    } 
}); 

任意の提案..

+0

に似た何かを行うことができ、のようなものは、それが今で動作していますか? –

答えて

8

列挙型は0から始まる整数として扱われ、その変更された:

var jsonData = { 'type': 'Recommendation', pageNumber: 0 }; 

これまで:

var jsonData = { 'type': 0, pageNumber: 0 }; 

クライアントはインデックス番号を知る必要があります。それらをハードコーディングしたり、@ Html.Raw(...)を使ってページに送り込んだり、別のajax呼び出しでそれらを利用できるようにすることができます。

+0

それは私に "500の重大な例外"というエラーを出しました。 – user3215002

+0

私の場合は、パラメータを整数として設定し、次にコントローラーでそれをキャストしなければなりませんでした。 'public ActionResult Index(int membershipType){MembershipType memberType =(MembershipType)membershipType; } ' –

3

クライアント側からenumを渡すことはできません。 stringまたはintを渡し、サーバー側でその値をenumにキャストします。

MessagingProperties result; 
string none = "None"; 
result = (MessagingProperties)Enum.Parse(typeof(MessagingProperties), none); 

それとも、this post

関連する問題