【问题标题】:Passing objects inside query string in MVC 4 and Backbone.js在 MVC 4 和 Backbone.js 中的查询字符串中传递对象
【发布时间】:2014-01-25 12:04:18
【问题描述】:

我正在使用backbone.js 发送一个GET 请求并将模型作为参数传递。

我的模型如下:-

class Vehicle
{
  public int Id
  public string Name
}
class Car
{
  public string Type
  public Vehicle Vehicle
}

现在,我的控制器是:-

    [HttpGet]    
    public ActionResult GetClasBDetails(Car carModel){
          // Something goes here
    }

当我这样做时:-

this.model.fetch({
    data: $.param({//I have tried removing  $.param also
        Vehicle: {
            Id: '1',// Also tried '1' and 1(as numeric)
            Name:'ford mustang'
        },
        Type: "Ford"
    }),

    success: function (data) {


    }

});

当我运行上面的代码时,Type 属性被映射并且我得到了正确的值,但不是Vehicle。有什么想法吗?

我必须在 HttpGet 请求中发送一个对象,因为有些复杂,请忽略它。

编辑:-

网址看起来像

http://localhost/Home/GetClasBDetails?Vehicle%Id%5D=10&Vehicle%Name%5D=Bed+10&Type=1

【问题讨论】:

  • 如果查看发送的get请求,它是什么样的?

标签: c# asp.net asp.net-mvc backbone.js query-string


【解决方案1】:

由于您的模型包含嵌套的 Vehicle 对象,您的请求必须采用特定格式,以便模型绑定器在您的控制器操作中实例化它。

您的请求网址需要采用以下格式:

http://localhost/Home/GetClasBDetails?Type=1&Vehicle.Id=1&Vehicle.Name=aName

请特别注意嵌套的 Vehicle 对象表示为由句点分隔的属性名称的方式。

您需要确保主干请求与此匹配,我尚未对此进行测试,但我猜这应该可以工作:

data: {
        Type: "Ford",
        'Vehicle.Id' : 1
        'Vehicle.Name' : 'ford mustang'
    }

【讨论】:

  • 如果我在我的数据属性中说Vehicle.Name : 'ford mustang',它会给我Unexpected token .
  • 谢谢伙计.. 它有效。只有The properties needs to be in quotes,我错过了。
【解决方案2】:

我同意hutchonoid,它唯一需要做的就是用单引号括起属性,否则它会抛出Unexpected token . 错误:-

data: {
        Type: "Ford",
        'Vehicle.Id' : 1
        'Vehicle.Name' : 'ford mustang'
    }

如果这是一个错误的标准或类似的任何东西,请纠正我。谢谢@hutchonoid

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-13
    • 2016-09-18
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多