【问题标题】:Binding javascript array with asp.net web api 2 controller将 javascript 数组与 asp.net web api 2 控制器绑定
【发布时间】:2015-10-17 09:56:22
【问题描述】:

假设我确实有以下网址:

"/api/requests/cbd?[{"requestid":"fd45001b-339f-ac28-e053-a24c07d4e3fb"},{"requestid":"fd45001b-329f-ac28-e053-a24c07d4e3fb"},{"requestid":"fd45001b-319f-ac28-e053-a24c07d4e3fb"}]"

如何绑定参数 - 数组与 asp.net web api 2 动作? 这个我试过了,但是没用。

[HttpGet]
[Route("api/requests/cbd")]
public IHttpActionResult CanBeDeleted([FromUri] string[] requestIds  )
{
    return Ok(result);
}

【问题讨论】:

    标签: javascript asp.net arrays asp.net-web-api


    【解决方案1】:

    您可以在控制器中使用它:

        public IHttpActionResult CanBeDeleted(JObject request)
        {
            Dictionary<string, object> myCollection = JsonConvert.DeserializeObject<Dictionary<string, object>>(request["NameOfYourParam"].ToString());
            return OK();
        }
    

    【讨论】:

      【解决方案2】:

      您可以像这样将操作保留在 web api 中,只需将 http 调用更改为:

      "/api/requests/cbd?requestid=1&requestid=2&requestid=3"
      

      如果您需要像您展示的那样调用 http,您可以采用 Kamo 的方法并为您的参数集合创建对象。

      【讨论】:

        【解决方案3】:

        您正在传递一个对象数组,因此可行的选择是创建一个类似的类:

        public class Ids 
        {
            public Guid requestid {get;set;}
        }
        

        并像这样使用它:

        [HttpGet]
        [Route("api/requests/cbd")]
        public IHttpActionResult CanBeDeleted([FromUri] IEnumerable<Ids> requestIds  )
        {
            return Ok(result);
        }
        

        或仅发送 id,不发送属性名称。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-23
          • 2012-06-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-04
          相关资源
          最近更新 更多