来自ajax post的数据将null传递给控制器

时间:2016-12-03 16:17:09

标签: ajax asp.net-mvc

AJAX call - 

这里countryId被传递为" AU"例如 -

$("#Countries").change(function () {
        var countryId = this.value;
        $.ajax({
            url: '/Registers/GetStates',
            type: "POST",
            data: { 'data': countryId },
            success: function (states) {
                $("#States").html(""); // clear before appending new list 
                $.each(states, function (i, state) {
                    $("#States").append(
                        $('<option></option>').val(state.Id).html(state.Name));
                });
            }
        });
    });

调用GetStates方法&#39; countryId&#39;始终在控制器方法中作为null传递。不知道我在这里失踪了什么。 我也试过了JSON.Stringify({&#39; data&#39;:countryId})。任何人都可以帮助我吗?

Controller Action - 

[HttpPost]
public SelectList GetStates(string countryId)
{
     return Helper.GetStates(countryId);
}

1 个答案:

答案 0 :(得分:6)

action方法中的参数应与ajax的'data'选项中的参数名称完全相同。

在您的情况下,它是'countryId'

[HttpPost]
public SelectList GetStates(string countryId)
{
     return Helper.GetStates(countryId);
}

相应地更改您的ajax数据选项。

data: { countryId: countryId },

它会起作用。