如何使用MVC WebApi 4返回空结果

时间:2014-12-10 21:37:37

标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api

我试图找出使用.Net 4.0上的网络API返回空结果的正确方法

我无法使用IHttpResult,因为那是.net 4.5的WebApi的一部分

Ok(ResultType.NoResult);

我以前使用过的函数,但现在我有这个块返回我的模型而不是IHttpResult。什么是返回空结果的正确方法?

public Models.Login Post(Models.LoginInfo loginInfo)
        {
            if(!ModelState.IsValid)
            {
                //throw new HttpResponseException("Failed");
            }
            //Fake Sql Stuff happened here. Dont question it.
            try
            {
                SqlConnection conn = new SqlConnection();
                conn.ConnectionString = @"fakeconnectionstring";

                conn.Open();

                SqlCommand cmd = new SqlCommand("LoginQuery", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@username", loginInfo.Username);
                cmd.Parameters.AddWithValue("@password", loginInfo.Password);


                SqlDataReader reader = cmd.ExecuteReader();
                Models.Login login = new Models.Login();
                // Call Read before accessing data. 
                while (reader.Read())
                {
                    login.id = (int)reader["id"];
                    login.Username = reader["username"].ToString();
                    login.Password = reader["password"].ToString();
                    login.Firstname = reader["first_name"].ToString();
                    login.Lastname = reader["last_name"].ToString();
                }

                conn.Close();

                //return Ok(ResultType.NoResult);
                //How to return empty result

            }
            catch
            {
                //throw new HttpResponseException(HttpStatusCode.NotFound);
                //How Do I Throw an empty result
            }
    }

2 个答案:

答案 0 :(得分:1)

通常null无意义:

{
 ...
 return null; 
}
catch
{
   return null;
}

编程说明:不处理异常(例如吞咽异常)是您申请的潜在无声杀手。

答案 1 :(得分:-1)

最佳实践表明只应在更改数据/模型的状态时使用POST。如果您希望在POST调用后返回一些数据,可以通过重定向到另一个操作来使用“重定向后获取”模式。