C# 通过AJAX传递参数,但在MVC方法中显示为null

C# 通过AJAX传递参数,但在MVC方法中显示为null,c#,asp.net-mvc,jquery,C#,Asp.net Mvc,Jquery,我是MVC的新手,我正在尝试用AJAX显示一个方法。问题是,我传递给方法的参数显示为null,但当我调试ajax代码时,该参数不是null。我不知道我做错了什么 这是我的c#方法 public JsonResult AllAccountList(int accountID) { Client myClient=new AccountServiceClient().GetClientByUsername(System.Web.HttpContext.Current.User.Identity.Na

我是MVC的新手,我正在尝试用AJAX显示一个方法。问题是,我传递给方法的参数显示为null,但当我调试ajax代码时,该参数不是null。我不知道我做错了什么

这是我的c#方法

public JsonResult AllAccountList(int accountID)
{
Client myClient=new AccountServiceClient().GetClientByUsername(System.Web.HttpContext.Current.User.Identity.Name);
IEnumerable myAccounts=new AccountServiceClient().GetAccountWithClient(myClient.ClientID);
List myList=新列表();
foreach(myAccounts.Where(a=>a.AccountID==Convert.ToInt32(AccountID))中的帐户a)
{
添加(新AccountModel(){AccountID=a.AccountID,TypeID_FK=a.TypeID_FK,FriendlyName=a.FriendlyName,Currency=a.Currency,AvailableBalance=a.AvailableBalance});
}
返回Json(myList,JsonRequestBehavior.AllowGet);
}
这是我的AJAX

function btnSelectClicked(AccountID) {
            var params = '{"accountID":"' + AccountID + '"}';
            $.ajax({
                type: "POST",
                url: "/Account/AllAccountList",
                data: params,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    var gridview = "<table>";
                    gridview += "<tr><td id='titleCol'>AccountId</td><td id='titleCol'>Account Type</td><td id='titleCol'>Friendly Name</td><td id='titleCol'>Currency</td><td id='titleCol'>Available Balnce</td></tr>";
                    for (var i = 0; i < data.length; i++) {
                        gridview += "<tr><td>" + data[i].AccountID +
                                    "</td><td>" + data[i].TypeID_FK +
                                    "</td><td>" + data[i].FriendlyName +
                                    "</td><td>" + data[i].Currency +
                                    "</td><td>" + data[i].AvailableBalance + "</td></tr>";
                    }
                    gridview += "</table>";
                    $("#display2").html(gridview);
                },

                error: function (xhr,err) {
                    alert(xhr.responseText + "An error has occurred during processing your request.");
                }
            });
        };
功能btnSelectClicked(AccountID){
var params='{“accountID”:“'+accountID+''“}”;
$.ajax({
类型:“POST”,
url:“/Account/AllAccountList”,
数据:params,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(数据){
var gridview=“”;
gridview+=“AccountIdAccountTypeFriendly NameCurrencyAvailable Balnce”;
对于(变量i=0;i
尝试更改

var params = '{"accountID":"' + AccountID + '"}';

看看这是否有帮助

更新: 我没想到会抱怨一个函数。。。当然,当我使用jquery ajax方法时,我会使用我需要的特定方法,而不是根ajax()方法。试试这个吧

function btnSelectClicked(AccountID) {
    var params = {accountID: AccountID };
    $.post("/Account/AllAccountList", data, function(data) {
        var gridview = "<table>";
            gridview += "<tr><td id='titleCol'>AccountId</td><td id='titleCol'>Account Type</td><td id='titleCol'>Friendly Name</td><td id='titleCol'>Currency</td><td id='titleCol'>Available Balnce</td></tr>";
            for (var i = 0; i < data.length; i++) {
                gridview += "<tr><td>" + data[i].AccountID +
                            "</td><td>" + data[i].TypeID_FK +
                            "</td><td>" + data[i].FriendlyName +
                            "</td><td>" + data[i].Currency +
                            "</td><td>" + data[i].AvailableBalance + "</td></tr>";
            }
            gridview += "</table>";
            $("#display2").html(gridview);
        });
    })
    .fail(function(jqXHR, textStatus, errorThrown ){
        alert(jqXHR.responseText + "An error has occurred during processing your request.");
    });
};
功能btnSelectClicked(AccountID){
var params={accountID:accountID};
$.post(“/Account/AllAccountList”),数据,函数(数据){
var gridview=“”;
gridview+=“AccountIdAccountTypeFriendly NameCurrencyAvailable Balnce”;
对于(变量i=0;i
您是否尝试过使用fiddler来监控客户端发送到服务器的实际内容?没有,但我使用了chrome调试程序。我发现错误,需要删除“contentType:”应用程序/json;charset=utf-8,“如果在浏览器中点击类似于
/Account/AllAccountList?accountid=1234
的内容,会发生什么情况?”?如果AllAccountList操作中有一个
[HttpPost]
属性,请尝试起飞测试url。
var params = {accountID: AccountID };
function btnSelectClicked(AccountID) {
    var params = {accountID: AccountID };
    $.post("/Account/AllAccountList", data, function(data) {
        var gridview = "<table>";
            gridview += "<tr><td id='titleCol'>AccountId</td><td id='titleCol'>Account Type</td><td id='titleCol'>Friendly Name</td><td id='titleCol'>Currency</td><td id='titleCol'>Available Balnce</td></tr>";
            for (var i = 0; i < data.length; i++) {
                gridview += "<tr><td>" + data[i].AccountID +
                            "</td><td>" + data[i].TypeID_FK +
                            "</td><td>" + data[i].FriendlyName +
                            "</td><td>" + data[i].Currency +
                            "</td><td>" + data[i].AvailableBalance + "</td></tr>";
            }
            gridview += "</table>";
            $("#display2").html(gridview);
        });
    })
    .fail(function(jqXHR, textStatus, errorThrown ){
        alert(jqXHR.responseText + "An error has occurred during processing your request.");
    });
};