如何使用 jquery ajax 将 web api 控制器中的 web 表单值作为模型类传递

Posted

技术标签:

【中文标题】如何使用 jquery ajax 将 web api 控制器中的 web 表单值作为模型类传递【英文标题】:how can i pass my webform value in webapi controller as a model class using jquery ajax 【发布时间】:2018-06-11 11:06:05 【问题描述】:

这是我的 ajax 代码,它在我的 api 中传递两个值

 function submitData() 
            var username = $("#username").val();
            var password = $("#password").val();
            $.ajax(
                type: 'POST',
                contentType: 'application/json; charset=utf-8',
                url: 'http://localhost:53893/api/login/checkLogin',
                data: JSON.stringify([username, password]),
                dataType: 'json',
                async: false,
                success: function (data) 

                    console.log(data);

                ,
                error: function (err) 

                    console.log(err);
                
            );
        

这是我的模型类,我想在我的 api 控制器中传递它

 public  class Login
    
        public ObjectId _id  get; set; 

        public string username  get; set; 

        public string password  get; set; 

    

这是我接受这两个参数的 api 控制器方法

[HttpPost]
        public string checkLogin(Login login)
        
            getLogin log = new getLogin();
     Boolean check =       log.checkLogin(login);

              if(check == true)
            
                return "login done";
            
              else
            
                return "failed to login";
            
        

现在我想要的是在我的 api 控制器中接受这个模型类,我尝试了很多,但它总是为空

【问题讨论】:

【参考方案1】:

js代码:

            data: JSON.stringify('username': username,'password': password)

API 代码:

        [HttpPost]
        public string checkLogin([FromBody] Login login)
        
            getLogin log = new getLogin();
     Boolean check =       log.checkLogin(login);

              if(check == true)
            
                return "login done";
            
              else
            
                return "failed to login";
            
        

【讨论】:

在我的控制器中仍然得到空值 从js创建类并字符串化对象,我想你知道怎么做 对不起,我不知道你能解释一下 嘿!不提兄弟。【参考方案2】:

通过 ajax 传递的数据应该具有它必须接受的相同数据结构。

尝试构建一个类似的对象

JSON.stringify('_id': id,  'username': username,   'password': password),

或者

将它们作为两个字符串分别传递,然后在控制器中将它们分配给对象。

[HttpPost]
public string checkLogin(string username, string password)

  Login login = new Login();
  login.username = username;
  login.password = password;
  getLogin log = new getLogin();
  Boolean check = log.checkLogin(login);
  if(check == true)
  
    return "login done";
  
  else
  
    return "failed to login";
  

然后在ajax传递

data: "'username': '" + username + "', 'password': '" + password + "'"

【讨论】:

以上是关于如何使用 jquery ajax 将 web api 控制器中的 web 表单值作为模型类传递的主要内容,如果未能解决你的问题,请参考以下文章