我有一个网页,它将从用户输入一个excel / CSV文件并从中读取数据并导入到DB.While插入每个记录。我只想显示有关插入到记录中的记录的详细信息。用户。(例如:A的客户详细信息正在添加...)
答案 0 :(得分:4)
尝试此操作...将输出设置为无缓冲(Response.BufferOutput),并在页面中包含一些javascript,以便在您认为合适时更新UI。例如,它可能会更新完成百分比的SPAN或您正在处理的记录的详细信息。然后在您的服务器代码中输出< script>从Render覆盖调用Javascript函数的标记。确保在适当的时候调用Flush(),并在渲染后刷新基本代码...... JS函数调用应该在适当的时间发送并在客户端执行,从而产生更新页面。
例如......您的HTML页面可能如下所示:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<script type="text/javascript">
function UpdateScreen(t) {
document.getElementById('output').innerHTML = t;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id='output'></div>
</div>
</form>
</body>
</html>
<script type="text/javascript">
UpdateScreen('hello');
</script>
您的代码隐藏将如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Threading;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void Render(HtmlTextWriter writer)
{
Response.BufferOutput = false;
base.Render(writer);
Response.Flush();
for (int i = 0; i < 10; i++)
{
Thread.Sleep(1000);
Response.Write(string.Format("<script type='text/javascript'>UpdateScreen('{0}');</script>", i * 10));
Response.Flush();
}
}
}
}
答案 1 :(得分:0)
我知道这是一个老问题,它的主人很久以前就已经搬家了。无论如何:
建议的解决方案不适用于ASP.NET MVC。如果你问我,你不这样做,我会说这不是解决这个问题最干净的方法: