ajax post没有将参数映射到asp.net控制器动作

时间:2016-08-05 08:08:26

标签: ajax asp.net-mvc windows iis

我有这个奇怪的问题。我刚从开发pc(win7到win10)切换,当我现在运行我的网站(在调试中)时,ajax调用发布的参数没有被映射到控制器动作的参数。在我的旧开发电脑上,它正在被映射,但在我的新电脑上,它只是赢了。

这是我的ajax电话:

      var obj = { companies: activeCompanyFilters, vesselTypes: activeVesselTypeFilters, vessels: activeVesselFilters, mapFilterType: getMapFilterType(), flushSession: flushSession };

    var json = JSON.stringify(obj);
    $.ajax({
        type: "POST",
        url: $("#filter-section").attr("data-source-link"),
        data: json,
        contentType: "application/json; charset=utf-8",
        success: retrieveSuccess
    }).done(() => {
        layerChanged();
        if (indicator) {
            indicator.close();
        }
    });

这是发送的内容(用fiddler捕获):

  

{"公司":[]," vesselTypes":[],"血管":[2317]" mapFilterType&#34 ;: 1," flushSession":假}

这是我的控制者:

 [AjaxOnly]
    public JsonResult FilterMarkers(long[] companies, long[] vesselTypes, long[] vessels, int? mapFilterType, bool? flushSession)
    {
        if (flushSession.HasValue && flushSession.Value)
            Session["HomeSession"] = null;

        MapFilterType filterType = HomeControllerHelper.CastToMapFilterTypeOrDefault(mapFilterType, GetSidUser());


        var session = HomeControllerHelper.GetCurrentSession(Session, filterType);
        var filtered = MapFilter.FilterData(session.VesselDetails, companies, vesselTypes, vessels).ToList();

        return new JsonResult()
        {
            JsonRequestBehavior = JsonRequestBehavior.AllowGet,
            Data = new
            {
                VesselDetails = filtered
            }
        };

    }

我不知道自己错过了什么。我知道它有效,因为它适用于我的旧电脑。我在IIS中找不到设置吗?

1 个答案:

答案 0 :(得分:0)

我发现了问题。通过visual studio,您可以创建一个虚拟目录,如果您使用的是本地iis。我配置它像本地主机/测试'。 网站中的内容配置为测试。

所以这只是一个套管问题。只是奇怪的只有映射失败但其他一切工作