首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC AJAX向控制器传递参数

ASP.NET MVC AJAX向控制器传递参数
EN

Stack Overflow用户
提问于 2017-07-15 07:01:21
回答 4查看 2.7K关注 0票数 1

我收到了这个错误

不存在与HomeController.GetCICO(string)所需的形式参数'SSN‘相对应的参数。

从这个代码中:

代码语言:javascript
复制
public JsonResult GetAllCICO()
    {
        var cicos = GetCICO().ToList();
        var jsonResult = Json(new{data = cicos}, JsonRequestBehavior.AllowGet);
        jsonResult.MaxJsonLength = int.MaxValue;
        return jsonResult;
    }

这是GetCICO:

代码语言:javascript
复制
public List<CICO> GetCICO(string SSN)
{
List<CICO> cicos = new List<CICO>();
using (SqlConnection con = new SqlConnection())
{
    con.ConnectionString = str;
    using (SqlCommand cmd = new SqlCommand())
    {
        cmd.Connection = con;
        cmd.CommandTimeout = 180;
        cmd.CommandText = "SELECT * FROM source_ips WHERE ssn_or_tin = '"+SSN+"' ORDER BY dateTrans ASC";
        con.Open();
        using (SqlDataReader sdr = cmd.ExecuteReader())
        {
            if (sdr.HasRows)
            {
                while (sdr.Read())
                {
                    CICO cico = new CICO()
                    {
                        ssn_or_tin = sdr["ssn_or_tin"] == DBNull.Value ? (double?)null : Convert.ToDouble(sdr["ssn_or_tin"]),
                        cusid = sdr["cusid"] == DBNull.Value ? (double?)null : Convert.ToDouble(sdr["cusid"]),
                        accountNo = sdr["accountNo"] == DBNull.Value ? (double?)null : Convert.ToDouble(sdr["accountNo"]),
                        dateTrans = sdr["dateTrans"].ToString(),
                        transCode = sdr["transCode"] == DBNull.Value ? (int?)null : Convert.ToInt32(sdr["transCode"]),
                        transdescription_1 = sdr["transdescription_1"].ToString(),
                        amount = sdr["amount"] == DBNull.Value ? (double?)null : Convert.ToDouble(sdr["amount"]),
                        cashin = sdr["cashin"] == DBNull.Value ? (double?)null : Convert.ToDouble(sdr["cashin"]),
                        cashout = sdr["cashout"] == DBNull.Value ? (double?)null : Convert.ToDouble(sdr["cashout"]),
                        source = sdr["source"].ToString()
                    };
                    cicos.Add(cico);
                }
            }
        }
        con.Close();
    }
}
return cicos;
}

这是我的抄本

代码语言:javascript
复制
var SSNdata = { SSN: $("#SSN").val() };
        $.ajax({
            type: "POST",
            url: "/Home/GetCICO",
            data: SSNdata,
            dataType: "json"
        });
EN

回答 4

Stack Overflow用户

发布于 2017-07-15 07:16:18

那么,你想发到哪种方法呢?我想这就是你想要的。

联署材料:

代码语言:javascript
复制
url: "/Home/GetAllCICO"

C#:

代码语言:javascript
复制
[HttpPost]
public JsonResult GetAllCICO(string SSN)
{
    var cicos = GetCICO(SSN).ToList();
    var jsonResult = Json(new{data = cicos});
    return jsonResult;
}
票数 0
EN

Stack Overflow用户

发布于 2017-07-15 07:16:40

似乎您正在调用控制器中的错误操作"GetCICO“,您需要在您的URL中调用"GetALLCICO”:

代码语言:javascript
复制
url: "/Home/GetCICO"  this is wrong URL 

Your URL should be 

url: "/Home/GetALLCICO"

你的Json行动应该是:

代码语言:javascript
复制
    [HttpPost]
    public JsonResult GetAllCICO(string SSN)
    {
        var cicos = GetCICO().ToList();
        var jsonResult = Json(new{data = cicos}, JsonRequestBehavior.AllowGet);
        jsonResult.MaxJsonLength = int.MaxValue;
        return jsonResult;
    }

因为您是URL中的一个参数'SSN‘:

代码语言:javascript
复制
var SSNdata = { SSN: $("#SSN").val() };
$.ajax({
        type: "POST",
        contentType: "application/json;charset=utf-8",
        url: "/Home/GetAllCICO",
        data: JSON.stringify(SSNdata),
        dataType: "json"
    });

根据这一点,您的控制器操作应该是:

代码语言:javascript
复制
[HttpPost]
public JsonResult GetAllCICO(string SSN)
票数 0
EN

Stack Overflow用户

发布于 2017-07-15 07:19:09

Hansmagz,我认为您是在用HttpGet的uri HttpGet获取数据。

如果是,请尝试以下代码。

jquery

代码语言:javascript
复制
var SSNdata = { SSN: $("#SSN").val() };
    $.ajax({
        type: "GET",
        url: "/Home/GetCICO",
        data: SSNdata,
        dataType: "json"
    });

MVC控制器

代码语言:javascript
复制
public JsonResult GetAllCICO(SSNdata data)
{
    var cicos = GetCICO(data.SSN).ToList();
    var jsonResult = Json(new{data = cicos}, JsonRequestBehavior.AllowGet);
    jsonResult.MaxJsonLength = int.MaxValue;
    return jsonResult;
}

SSNdata类

代码语言:javascript
复制
public class SSNdata
{
     public string SSN{get;set;}
}

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45115460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档