【问题标题】:ASP.NET MVC AJAX passing Parameters to ControllerASP.NET MVC AJAX 将参数传递给控制器
【发布时间】:2017-07-15 07:01:21
【问题描述】:

我收到了这个错误

没有给出与 HomeController.GetCICO(string) 所需的形式参数“SSN”相对应的参数

从此代码:

public JsonResult GetAllCICO()
    {
        var cicos = GetCICO().ToList();
        var jsonResult = Json(new{data = cicos}, JsonRequestBehavior.AllowGet);
        jsonResult.MaxJsonLength = int.MaxValue;
        return jsonResult;
    }

这是GetCICO:

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"
        });

【问题讨论】:

    标签: javascript c# asp.net ajax asp.net-mvc


    【解决方案1】:

    Hansmagz,我认为您正在尝试使用 HttpGet 的 uri "/Home/GetAllCICO" 获取数据?

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

    jquery

    var SSNdata = { SSN: $("#SSN").val() };
        $.ajax({
            type: "GET",
            url: "/Home/GetCICO",
            data: SSNdata,
            dataType: "json"
        });
    

    MVC 控制器

    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;
    }
    

    SSN 数据类

    public class SSNdata
    {
         public string SSN{get;set;}
    }
    

    希望这会有所帮助!

    【讨论】:

    • Dude $("#SSN").val() 它不是模型而是字符串。
    • 我想将一个参数传递给我的 SQL 查询,有没有其他方法可以代替我当前的代码?
    • 我认为使用GetCICO方法将参数传递给您的Sql查询没有任何问题。唯一的建议是使用 SqlParameter 而不是字符串 concat..
    • @TheFORCEJB 我该怎么做?
    • 你可以看看这个article 或谷歌它:)
    【解决方案2】:

    嗯,你想发布到哪个方法?我想这就是你想要的。

    JS:

    url: "/Home/GetAllCICO"
    

    C#:

    [HttpPost]
    public JsonResult GetAllCICO(string SSN)
    {
        var cicos = GetCICO(SSN).ToList();
        var jsonResult = Json(new{data = cicos});
        return jsonResult;
    }
    

    【讨论】:

    • 这是一个问题还是一个答案?
    • @Joe_DM 我猜他想发帖到 getallcico
    • 我想将一个参数传递给我的 SQL 查询,有没有其他方法可以代替我当前的代码?
    • @Hansmagz 关键是您需要首先在您的方法中获取 SSN 参数。你的 ajax 调用类型是什么,get 还是 post?
    • @Hansmagz 我认为我所有的代码和 Laxman Gite 的都可以正常工作。先更新并尝试调试。
    【解决方案3】:
    Javascript Code ::
    
                    var ssnData="123";
                    $.ajax({
                                    type: "POST",
                                    contentType: "application/json;charset=utf-8",
                                    data: JSON.stringify({ 'SSNdata': ssnData }),
                                    url: '@Url.Action("GetAllCICO", "Home")',
                                    dataType: 'json',
                                    success: function (cicos) {
                                        //cicos is your response data
                                    }
                                });
        Controller part::
    
                public JsonResult GetAllCICO(string SSNdata)
                        {
                            var json=Json("Here your list",JsonRequestBehavior.AllowGet);
                            return json;
                        }
    

    【讨论】:

      【解决方案4】:

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

      url: "/Home/GetCICO"  this is wrong URL 
      
      Your URL should be 
      
      url: "/Home/GetALLCICO"
      

      你的 Json Action 应该是:

          [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”:

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

      据此,您的控制器操作应该是:

      [HttpPost]
      public JsonResult GetAllCICO(string SSN)
      

      【讨论】:

      • $("#SSN").val() 中的值是多少
      • 该值来自输入标签,例如:2369646
      • @Hansmagz 你添加了 [HTTPPOST] 属性吗?
      猜你喜欢
      • 2010-09-14
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      相关资源
      最近更新 更多