C# 如何在MVC中使用页面加载指示器/进度条
这是我的模型:C# 如何在MVC中使用页面加载指示器/进度条,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,这是我的模型: public class Pitchermodels { InsideEdEntities ieEntity = new InsideEdEntities(); PitcherProfileEntities ppEntity = new PitcherProfileEntities(); Pitcher5model p5Mod = new Pitcher5model(); Pitcher6model p6Mod = new Pitcher6model(); public Pi
public class Pitchermodels
{
InsideEdEntities ieEntity = new InsideEdEntities();
PitcherProfileEntities ppEntity = new PitcherProfileEntities();
Pitcher5model p5Mod = new Pitcher5model();
Pitcher6model p6Mod = new Pitcher6model();
public Pitcher5model pitcher5(long? _pid)
{
if (p5Mod.exist(_pid) == true)
{
p5Mod.playerinfo = ieEntity.ppsproc_playerinfo(_pid).FirstOrDefault();
p5Mod.ListP5T1 = ppEntity.ppsproc_newP5_T1(_pid).ToList();
p5Mod.ListP5T2 = ppEntity.ppsproc_P5_T2(_pid).ToList();
return p5Mod;
}
else
{
return null;
}
}
public Pitcher6model pitcher6(long? _pid)
{
if (p6Mod.exist(_pid) == true)
{
p6Mod.playerinfo = ieEntity.ppsproc_playerinfo(_pid).FirstOrDefault();
p6Mod.ListP6T1 = ppEntity.ppsproc_P6(_pid).ToList();
return p6Mod;
}
else
{
return null;
}
}
}
这是我的控制器:
public ActionResult AllPitchers(long? _pid)
{
Pitchermodels pMods = new Pitchermodels();
return View(pMods);
}
以下是我的观点:
@model MVCdodgersplayerinfohub.Models.Pitchermodels
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>All Pitcher Reports</title>
<link href="~/LA.ico" rel="shortcut icon" type="image/x-icon" />
</head>
<body>
<div>
@Html.Partial("Pitcher5",Model.pitcher5(Convert.ToInt32(Request.QueryString["_pid"])))
</div>
<p style="page-break-before:always;"></p>
<div>
@Html.Partial("Pitcher6",Model.pitcher6(Convert.ToInt32(Request.QueryString["_pid"])))
</div>
</body>
</html>
@model MVCdodgersplayerinfohub.Models.Pitchermodels
@{
布局=空;
}
所有投手报告
@Html.Partial(“pitchr5”,Model.pitchr5(Convert.ToInt32(Request.QueryString[“\u pid”]))
@Html.Partial(“pitchr6”,Model.pitchr6(Convert.ToInt32(Request.QueryString[“\u pid]”)))
有一件事不太好,那就是加载可能需要2分钟以上的时间,而且用户觉得它甚至可能无法加载(鼠标只是旋转)。是否可以在进度条中输入内容?我认为大多数用户喜欢进度条,因为至少他们知道它在工作,以及需要多长时间。关于浏览器的工作原理,您需要了解以下几点:
- 如果正在打开页面,则在连接关闭之前不会显示任何内容。图像和其他内容稍后由浏览器解析,以便 它们在第一页打开后打开
- 除非您知道所接收数据的大小,否则无法确定页面打开的当前状态。为此,页面必须开始发送数据,并且您需要确切地知道数据有多大。例如,文件具有数据的设置大小,因此可以使用Javascript将进度条附加到该文件。所有数据都在服务器上处理,而浏览器仍在等待响应
- 您需要在前端(html端)进行某种跟踪。这意味着您至少需要打开某种基本的页面外壳,以便跟踪事务。这可以通过使用AJAX加载部分网站并粗略估计打开所需的时间来完成(并将其应用于与时间相关的进度条)。将进度条分解为加载段(即加载1/4段,进度条为1/4段)将在此设置中起作用
- 查看您的数据库调用。您是否多次调用数据库以获取您可能已经拥有的数据
- 您正在加载的数据非常大。您是否正在加载整个表,而不仅仅是所需的列?你要加入非常大的桌子吗
- 如果这依赖于(比如)一个文件来加载数据,那么是否有其他东西在使用该文件并且程序正在等待访问
- 看看你的收藏。你又在分类、求助和分类了吗?您是否在不同的集合类型之间进行转换(例如,从LinkedList到Array再到List再到其他类型)?如果您有大量集合,您正试图通过C#进行排序,您是否可以在其他地方对它们进行排序,例如在数据库查询中
- 在什么情况下你的页面会变慢?尽管数据量相同,但是否有页面打开速度更快?如果是这样,瓶颈可能发生在一个非常特定的地方
- 你是在慢速服务器上运行的吗?这会对性能产生巨大影响
如果你在性能上有很大的麻烦,在优化了绝大多数网站之后,考虑使用Ajax和部分视图。虽然它们不会提高您的总体性能,但它将允许您分段打开网站,提供更多的视觉反馈,告诉用户页面仍在加载。
是的。您可以在组件中使用等待弹出窗口等待加载时间。例如,如果使用等待弹出组件,请在.ajaxStart()事件中调用弹出窗口,并在AjaxComplete事件中关闭等待弹出窗口 请检查下面的ajax事件以供进一步参考