Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过c#asp.net中的postasync方法传递多个数据_C#_Asp.net_Model View Controller - Fatal编程技术网

通过c#asp.net中的postasync方法传递多个数据

通过c#asp.net中的postasync方法传递多个数据,c#,asp.net,model-view-controller,C#,Asp.net,Model View Controller,我正在尝试使用http postasync客户端方法传递多个数据。目前,我在客户端使用postasync,在服务器端使用post方法,该方法采用两个参数。我的问题是如何使用c#在服务器端成功检索此信息。我希望能够检索登录信息,以及islogin布尔值。如何在服务器端检索它。 以下是服务器的代码: // POST: api/Register [ResponseType(typeof(Login))] public IHttpActionResult PostLogin(Login lo

我正在尝试使用http postasync客户端方法传递多个数据。目前,我在客户端使用postasync,在服务器端使用post方法,该方法采用两个参数。我的问题是如何使用c#在服务器端成功检索此信息。我希望能够检索登录信息,以及islogin布尔值。如何在服务器端检索它。 以下是服务器的代码:

  // POST: api/Register
  [ResponseType(typeof(Login))]
  public IHttpActionResult PostLogin(Login login, bool isLogin) {
         if (!ModelState.IsValid) {
            return BadRequest(ModelState);
        }
        using (SqlConnection conn = new SqlConnection(_dbConn))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand("GetLogin", conn);
            cmd.CommandType = System.Data.CommandType.StoredProcedure;
            SqlParameter param = new SqlParameter();
            cmd.Parameters.AddWithValue("@email", SqlDbType.VarChar).Value = login.Email;
            cmd.Parameters.AddWithValue("@pwd", SqlDbType.VarChar).Value = login.Password;
            SqlParameter returnValue = new SqlParameter("returnVal", SqlDbType.Int);
            returnValue.Direction = ParameterDirection.ReturnValue;
            cmd.Parameters.Add(returnValue);
            cmd.ExecuteNonQuery();
            var result = returnValue.Value;
            if (isLogin == true)
            {
                //int result = db.GetLogin(login.Email, login.Password);


                switch (result)
                {
                    case (int)DBResponses.Success:
                        //return CreatedAtRoute("DefaultApi", new { id = 0 }, (int)DBResponses.Success);
                        return Ok((int)DBResponses.Success);

                    case (int)DBResponses.BadEmail:
                        //return CreatedAtRoute("DefaultApi", new { id = 2 }, (int)DBResponses.BadEmail);
                        return Ok((int)DBResponses.BadEmail);
                    case (int)DBResponses.BadPassword:
                        //return CreatedAtRoute("DefaultApi", new { id = 3 }, (int)DBResponses.BadPassword);
                        return Ok((int)DBResponses.BadPassword);
                    case (int)DBResponses.EmailNotVerified:
                        //return CreatedAtRoute("DefaultApi", new { id = 4 }, (int)DBResponses.EmailNotVerified);
                        return Ok((int)DBResponses.EmailNotVerified);
                    case (int)DBResponses.EmailNotFound:
                        //return CreatedAtRoute("DefaultApi", new { id = 5 }, (int)DBResponses.EmailNotFound);
                        return Ok((int)DBResponses.EmailNotFound);
                    default:
                        //NOTE: shouldn't reach this point
                        return Ok((int)DBResponses.GeneralFailure);
                        //return CreatedAtRoute("DefaultApi", new { id = 6 }, (int)DBResponses.GeneralFailure);
                }
            }
            else
            {
                switch (result)
                {
                    case (int)DBResponses.LoginEntryCreated:
                        //return CreatedAtRoute("DefaultApi", new { id = 1 }, (int)DBResponses.LoginEntryCreated);
                        return Ok((int)DBResponses.LoginEntryCreated);
                    default:
                        return Ok((int)DBResponses.GeneralFailure);
                }


            }
        }
以下是客户端的代码:

   internal async Task<string> GetLoginAsync(Login login,bool isLogin) {
        string json = JsonConvert.SerializeObject(login);
        string json1 = JsonConvert.SerializeObject(isLogin);
        HttpContent content = new StringContent(json);
        content.Headers.Add("isLogin", isLogin.ToString());
        content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
        HttpResponseMessage result = await c.PostAsync(development, content);
        string responseMessage = await result.Content.ReadAsStringAsync();
        if (responseMessage == "0")
        {
            return "Success";
        }
        else if (responseMessage == "2")
        {
            return "BadEmail";
        }
        else if (responseMessage == "3")
        {
            return "BadPassword";
        }
        else if (responseMessage == "4")
        {
            return "EmailNotVerified";
        }
        else if(responseMessage =="5")
        {
            return "EmailNotFound";
        }
        //Should never reach this point
        else {
            return "GeneralFailure";
        }

    }
内部异步任务GetLoginAsync(登录登录,bool isLogin){
字符串json=JsonConvert.SerializeObject(登录);
字符串json1=JsonConvert.SerializeObject(isLogin);
HttpContent=新的StringContent(json);
Add(“isLogin”,isLogin.ToString());
content.Headers.ContentType=新的MediaTypeHeaderValue(“应用程序/json”);
HttpResponseMessage结果=等待c.PostAsync(开发、内容);
string responseMessage=wait result.Content.ReadAsStringAsync();
如果(响应消息==“0”)
{
返回“成功”;
}
否则如果(响应消息==“2”)
{
返回“坏邮件”;
}
否则如果(responseMessage==“3”)
{
返回“BadPassword”;
}
else if(responseMessage==“4”)
{
返回“EmailNotVerified”;
}
否则如果(responseMessage==“5”)
{
返回“EmailNotFound”;
}
//不应该达到这一点
否则{
返回“GeneralFailure”;
}
}

如果我确实正确理解了你的问题,以下是解决方案 从客户端(JS)发送数据 创建一个对象

var logObj = new Object();
logObj.username = "";
logObj.password = "";
..
logObj.etc = "";
要返回信息,可以创建如下类

class Loginfo
{
        public bool Islogin { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
}
并返回一个对象
希望这会有所帮助

您有两个选择:

  • 通过查询字符串调用API方法,这样您只需读取服务器端的查询字符串

  • 使用JsonConvert.SerializeObject(ObjectHere)序列化对象,另一方面使用反序列化对象。不要忘记将[serializable]添加到实体定义(类)中。您还可以使用HttpClient自己执行请求


  • 你真的应该创建一个具有
    Login
    bool
    属性的类型,并将其作为单个对象发送给控制器。是的,我在想,但这需要更改数据库中的大量代码,项目找到了解决方案