将 JSON 对象传递给服务器端并在函数中解析
Passing JSON object to Server side and parsing in function
代码的整体意图
提供的代码是通过 angularJS 从登录页面获取用户名和密码。它被传递给包含 AJAX 脚本的函数。然后数据通过服务器端,并应与数据库中的数据进行比较。如果一切顺利,它应该将会话 ID 和用户名推送到会话以进行身份验证和授权。
所提供脚本的用途:
我试图将 JSON 对象传递到服务器端。我有 JSON,但是在函数中检索它并从对象中获取值是我迷路的地方。
我之前尝试过什么:
我试过使用列表 class 和字符串。我将显示列表、卡住的位置和字符串。
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 对象到服务器端,用于比较数据库中的数据和 return 0 或新会话,具体取决于是否匹配。
对于您的 JavaScript 有效负载对象,创建一个精确的模型,比如 UserCred
public class UserCred
{
public string Uname { get; set; }
public string Pass { get; set; }
}
现在,当您执行 AJAX post 时,MVC 会将您的负载绑定到模型。要访问您的属性,只需使用 model.property
[HttpPost]
public string CheckUser(UserCred model)
{
if(!ModelState.IsValid)
{
return "0";
}
string uname = model.Uname;
string pword = model.Pass;
/* Your Code
*
*/
}
代码的整体意图 提供的代码是通过 angularJS 从登录页面获取用户名和密码。它被传递给包含 AJAX 脚本的函数。然后数据通过服务器端,并应与数据库中的数据进行比较。如果一切顺利,它应该将会话 ID 和用户名推送到会话以进行身份验证和授权。
所提供脚本的用途: 我试图将 JSON 对象传递到服务器端。我有 JSON,但是在函数中检索它并从对象中获取值是我迷路的地方。
我之前尝试过什么: 我试过使用列表 class 和字符串。我将显示列表、卡住的位置和字符串。
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 对象到服务器端,用于比较数据库中的数据和 return 0 或新会话,具体取决于是否匹配。
对于您的 JavaScript 有效负载对象,创建一个精确的模型,比如 UserCred
public class UserCred
{
public string Uname { get; set; }
public string Pass { get; set; }
}
现在,当您执行 AJAX post 时,MVC 会将您的负载绑定到模型。要访问您的属性,只需使用 model.property
[HttpPost]
public string CheckUser(UserCred model)
{
if(!ModelState.IsValid)
{
return "0";
}
string uname = model.Uname;
string pword = model.Pass;
/* Your Code
*
*/
}