通过c#asp.net中的postasync方法传递多个数据
我正在尝试使用http postasync客户端方法传递多个数据。目前,我在客户端使用postasync,在服务器端使用post方法,该方法采用两个参数。我的问题是如何使用c#在服务器端成功检索此信息。我希望能够检索登录信息,以及islogin布尔值。如何在服务器端检索它。 以下是服务器的代码:通过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
// 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; }
}
并返回一个对象
希望这会有所帮助您有两个选择:
你真的应该创建一个具有
Login
和bool
属性的类型,并将其作为单个对象发送给控制器。是的,我在想,但这需要更改数据库中的大量代码,项目找到了解决方案