【问题标题】:pass enum parameter from Ajax Jquery to MVC web api将枚举参数从 Ajax Jquery 传递到 MVC web api
【发布时间】:2014-02-09 14:25:41
【问题描述】:

我需要调用一个 web api,这个 web api 方法接受两个参数,一个是 enum 类型,另一个是 int。我需要使用 Ajax Jquery 调用这个 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');
    }
});

任何建议..

【问题讨论】:

    标签: asp.net-mvc jquery enums


    【解决方案1】:

    枚举被视为从 0 开始的整数,因此请更改:

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

    到这里:

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

    客户需要知道索引号。您可以对它们进行硬编码,或者使用@Html.Raw(...) 将它们发送到页面中,或者使它们在另一个 ajax 调用中可用。

    【讨论】:

    • 它对我不起作用,它给了我错误“500 严重异常”。
    • 就我而言,我必须将参数设置为整​​数,然后将其转换为控制器public ActionResult Index(int membershipType) { MembershipType memberType = (MembershipType)membershipType; }
    【解决方案2】:

    您不能从客户端传递enum。传递stringint 并在服务器端将该值转换为enum。类似的,

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

    或者你可以做类似this post的事情

    【讨论】:

      猜你喜欢
      • 2017-02-08
      • 1970-01-01
      • 2012-04-18
      • 2011-06-13
      • 1970-01-01
      • 2011-05-10
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多