【问题标题】:Passing JSON object to Server side and parsing in function将 JSON 对象传递到服务器端并在函数中解析
【发布时间】:2019-07-05 08:52:24
【问题描述】:

代码的整体意图 提供的代码是通过 angularJS 从登录页面获取用户名和密码。它被传递给包含 AJAX 脚本的函数。然后将数据传递到服务器端,并应与数据库中的数据进行比较。如果一切顺利,它应该将会话 ID 和用户名推送到会话以进行身份​​验证和授权。

提供脚本的目的: 我正在尝试将 JSON 对象传递到服务器端。我有 JSON,但是在函数中检索它并从对象中获取值是我迷路的地方。

我以前尝试过什么: 我尝试过使用列表类和字符串。我将显示列表以及卡住的位置和字符串。

AJAX:

    login: function (username, password) {
                var cred = { "uname": username, "pass": password };
                var response = $http({
                    method: "post",
                    url: "/Login/CheckUser",
                    data: JSON.stringify({ model: cred }),
                    contentType: 'application/json; charset=utf-8',
                    dataType: "JSON",
                    success: function (msg) {
                        if (msg) {
                            console.log("success");
                        }
                    },
                    error: function (msg) {
                        if (msg) {
                            console.log("fail");
                        }
                    }

使用字符串方法:

   [HttpPost]
        public string CheckUser(String umodel) 
        {
            Console.Write(umodel);
            string modelCheck = umodel;
/*not sure how to parse from here */

列表:

        public class userCred
        {
            public string uname { get; set; }

            public string pass { get; set; }


            public List<userCred> userCreds = new List<userCred>();

        }
        [HttpPost]
        public string CheckUser(List<userCred> umodel) 
        {


            string uname = "";
            string pword = "";

/*Not sure how to access values from JSON here */

            /*  Begin Assigning values 
             *  Validation check
             */
            using (localtestEntities entity = new localtestEntities())
            {
                var user = entity.users.Where(u => u.uname == uname).FirstOrDefault();
                if (user != null)
                {
                    if (pword == user.pw)
                    {
                        Session["LoginID"] = user.id;
                        Session["Username"] = user.fname + ' ' + user.lname;
                        return user.id.ToString();
                    }
                    else
                    {
                        return "0";
                    }
                }
                else
                {
                    return "0";
                }
            }
            /* Begin Assigning values */
        } //End Check User

预期结果将成功地将 JSON 对象传递到服务器端以比较数据库中的数据,并根据它们是否匹配返回 0 或新会话。

【问题讨论】:

    标签: c# json asp.net-mvc-5 server-side


    【解决方案1】:

    为您的 JavaScript 有效负载对象,创建一个精确的模型,例如 UserCred

    public class UserCred
    {
        public string Uname { get; set; }
        public string Pass { get; set; }
    }
    

    现在,当您执行 AJAX 发布时,MVC 会将您的有效负载绑定到模型。要访问您的属性,只需使用 model.property

    [HttpPost]
    public string CheckUser(UserCred model) 
    {
      if(!ModelState.IsValid)
      {
        return "0";
      }
        string uname = model.Uname;
        string pword = model.Pass;
    
        /* Your Code
         *  
         */
    
     }
    

    【讨论】:

    • 我还建议您重新检查他们从客户端发送的模型。即:data: JSON.stringify({ model: cred }),
    • @Nkosi 我刚刚扩展了这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多