0

在将数据库作为 Json 对象传递给 asp.net MVC 4 之后,我正在尝试查询数据库并向用户显示信息。

我能想到通过它的唯一方法如下:

    public JsonResult Search()
    {

            SqlCommand myCommand = new SqlCommand("Select * from table", 
                                                   myConnection);


            SqlDataReader myReader = myCommand.ExecuteReader();
            while (myReader.Read())
            {
                //Col1-7 are lists
                Col1.Add(myReader["Column1"].ToString());
                Col2.Add(myReader["Column2"].ToString());
                Col3.Add(myReader["Column3"].ToString());
                Col4.Add(myReader["Column4"].ToString());
                Col5.Add(myReader["Column5"].ToString());
                Col6.Add(myReader["Column6"].ToString());
                Col7.Add(myReader["Column7"].ToString());
            }
        return Json(new {Col1, Col2, Col3, Col4, Col5, Col6, Col7});
    }

唯一的问题是我不想为此使用繁重的客户端,并且通过这样做,而不是将数据表保存为紧凑型数据库,而是将其保存为一堆列表。这种方法是否违背了尝试不在客户端保存太多数据的目的(反正我就是不使用 SqlServerCe),如果是这样,有没有更好的方法来做到这一点?

4

2 回答 2

0

我不完全理解你的问题。我可以弄清楚的是,您不想在客户端上向用户显示太多信息?

在尝试回答您的问题时,我还将提供一些指示。

不要像从控制器中那样进行数据检索。而是使用服务层或存储库来带回数据。假设您想恢复数据库中的所有用户,那么我会这样做(只返回您需要的,其余的可以省略):

public ActionResult GetAllUsers()
{
     List<User> users = userService.FindAll();

     var result =
          from user
          in users
          select new[]
          {
               user.Id.ToString(),
               user.FirstName,
               user.LastName,
               user.Age.ToString()
          };

          return Json(result, JsonRequestBehavior.AllowGet);
}

您可以将所有这些放入您的 UserService 类中:

SqlCommand myCommand = new SqlCommand("Select * from table",  myConnection);

SqlDataReader myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
     //Col1-7 are lists
     Col1.Add(myReader["Column1"].ToString());
     Col2.Add(myReader["Column2"].ToString());
     Col3.Add(myReader["Column3"].ToString());
     Col4.Add(myReader["Column4"].ToString());
     Col5.Add(myReader["Column5"].ToString());
     Col6.Add(myReader["Column6"].ToString());
     Col7.Add(myReader["Column7"].ToString());
}

将您的 IUserService 接口注入控制器:

public class UserController : Controller
{
     private readonly IUserService userService;

     public UserController(IUserService userService)
     {
          this.userService = userService;
     }

     // The rest of your action methods goes here, including GetAllUsers()
}
于 2013-07-02T08:38:37.743 回答
0

如果您返回 JsonResult,请使用以下命令:

JsonResult retVal = new JsonResult();
...
retVal.Data = new { col1 = Col1, ....};
return retVal;

让我知道它是否有帮助。

于 2013-07-01T22:05:17.647 回答