如何将数据列表传递给Views

时间:2010-09-08 12:50:38

标签: asp.net-mvc model-view-controller

实际上我想在一个视图上生成一个申请人列表(超过1000个),因为我正在使用sql数据阅读器并将一个列表和传递给视图,但它需要很长时间(4到5秒)才能显示当记录超过500时查看是正常的。

{

public static ApplicantsList GetListSend(string category,string subDiv)         {             string os =“N”;             if(category ==“SCOS”)                 os =“Y”;             申请人申请; //申请人类包含姓名,地址,电话等////             ApplicantsList AppList = new ApplicantsList(); // ApplicantLst Class List type //             string sqlcon = ConfigurationManager.ConnectionStrings [“ConnectionString”]。ConnectionString.ToString();             SqlConnection con = new SqlConnection(sqlcon);             con.Open();             string SqlQuery =“SELECT [idno],[ApplicantName],[Address],[Status],convert(varchar(10),DateOfApplication,103)as DateOfApplication FROM [SCOBC] where(status ='Pending With Dealing Assistant'and category ='“+ category +”')和SubDiv ='“+ subDiv +”'和os ='“+ os +”'按idno排序“;             SqlCommand cmd = new SqlCommand(SqlQuery,con);             SqlDataReader sdr = null;             sdr = cmd.ExecuteReader();             if(sdr.HasRows)             {                 while(sdr.Read())                 {                     App = new Applicant();                     App.IdNo = sdr [“idno”]。ToString();                     App.Name = sdr [“ApplicantName”]。ToString();                     App.Address = sdr [“Address”]。ToString();                     App.Status = sdr [“Status”]。ToString();                     App.DateOfApp = sdr [“DateOfApplication”]。ToString();                     AppList.Add(应用程序);

            }
            sdr.Close();
            con.Close();
        }
        return AppList;
    }

}

2 个答案:

答案 0 :(得分:2)

我不知道您的数据库调用需要4-5秒是否正常,但不正常的是在单个视图上显示1000个项目的列表而不实现分页。

当您实施分页时,不仅会使您的页面变得更小,更容易从用户那里阅读,而且会大大提高性能,因为您只会获取所需内容。当然,为了使其有效,必须在SQL Server上进行分页。

答案 1 :(得分:0)

看到包含如此多数据的页面需要很长时间才能呈现,这并不罕见。下一步是确定页面生命周期的哪一部分占用了这么多时间。它可能是SQL调用,HTML的呈现或其他东西,但您确实需要限制问题的范围,以有效地计划您将如何修复它。我已经看到它在SQL查询非常快的地方,但是由于数据量很大,HTML页面非常庞大,以至于它需要Web浏览器永远呈现它。