【问题标题】:Pass complex object to MVC api is null将复杂对象传递给 MVC api 为 null
【发布时间】:2013-04-29 20:33:20
【问题描述】:

我有一个服务调用,它从我们的数据库中获取一组过滤的历史记录。

我无法让我的过滤器进入我的主 mvc 调用。

[AcceptVerbs("POST")]
public History History( HistoryFilters filters){......}

config.Routes.MapHttpRoute(
  name: "DefaultActionRoute",
  routeTemplate: "api/{controller}/{action}/{id}",
  defaults: new {id = RouteParameter.Optional}
);

amplify.request.define('post', 'ajax', {
    url: '/api/{controller}/{action}',
    dataType: 'json',
    type: 'POST',
    cache: cache
});

//History Filter js
{
  DateRange: { Start: ..., End: ...},
  BetStatus: "unresolved",
  TransactionTypes: "bets"
}

每次我拨打电话时,过滤器都会填充空值。 JS 过滤器结构与我在 C# 中的 HistoryFilters 类的结构相匹配。如果我 JSON.stringify 我的过滤器并将我的 Api 调用更改为字符串,那么我会得到它,但如果它可以为我转换它会很好。

谁能告诉我我错过了什么?

编辑

var amp = function(id, data) {
    return $.Deferred(function(dfd) {
        amplify.request({
            resourceId: id,
            data: data,
            success: dfd.resolve,
            error: dfd.reject
        });
    }).promise();
};

History: function (filters) {
        return amp('post', { controller: 'user', action: 'history', '':filters});
    }


public class HistoryFilters
{
    public DateFilter DateRange { get; set; }
    public string BetStatus { get; set; }
    public string TransactionTypes { get; set; }
}

public class DateFilter
{
    public string Start { get; set; }
    public string End { get; set; }
}

【问题讨论】:

  • 提供“HistoryFilters”定义和“amplify.request()”代码。可能的解决方案 1. 在“amplify.request.define”中添加设置“contentType:'application/json'”。 2.在data参数中发送字符串化数据'JSON.stringify(historyFilters)'。

标签: javascript c#-4.0 asp.net-mvc-4 amplifyjs


【解决方案1】:

据我了解,AmplifyJS 在设置 contentType 时存在问题,因此无法进行此类调用。我现在删除了 amplifyJS 调用,只使用 jquery。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-23
    • 2014-01-06
    • 2016-06-12
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多