我已经知道,Response.End()
之后的代码无效。我在alert
之后尝试message box
Response.End
。基本上我正在做的是我将从Excel
文件中读取数据并检查excel文件中缺少的数据。我将收集Excel
文件中缺少的所有数据,并将它们全部写入text
文件,并使用以下代码提示
string strPath = Server.MapPath("ErrorLog") + "\\" + "ErrorLog.txt";
string FileName = "Errorlog" + ".txt";
string[] createText = { sb.ToString() };
File.WriteAllLines(strPath, createText);
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + "");
strPath.Length.ToString());
HttpContext.Current.Response.ContentType = "application/text";
HttpContext.Current.Response.WriteFile(strPath);
HttpContext.Current.Response.End();
在此之后,我想显示一个警告框,上面写着Invalid Data
之类的内容。但我想知道在Response.End
//根据lcarus
string strPath = Server.MapPath("ErrorLog") + "\\" + "ErrorLog.txt";
string[] createText = { sb.ToString() };
File.WriteAllLines(strPath, createText);
ClientScriptManager CSM = Page.ClientScript;
string strconfirm = "<script>if(window.confirm('Excel file has Invalid data.')){window.location.href='/Excel1/ErrorLog/ErrorLog.txt'}</script>";
CSM.RegisterClientScriptBlock(this.GetType(), "Confirm", strconfirm, false);
答案 0 :(得分:1)
您需要以两部分的方式执行此操作:
收集丢失的数据,将其保存到文件中(顺便说一句,您需要为日志文件创建唯一的名称,除非您计划仅支持您网站上的一个并发用户)并使用ClientScript.RegisterStartupScript
调用这样的函数:
ClientScript.RegisterStartupScript(this.GetType(),"somekey",
"alert('Some data missing!'); window.location.href='http://your_site.com/path_to_log_file'",true);
您将了解path_to_log_file
,因为您是在服务器端生成它的人。{/ p>
用户将看到警报并在点击&#34; OK&#34;日志文件将显示在他的浏览器上或要求下载它,具体取决于浏览器是否知道如何处理文件(这通常由文件的扩展名决定)。
<强>更新强>
示例HTTPHandler实现。
你可以从后面的代码构建这样的链接:
window.location.href='FileDownloader.ashx?FileName=ErrorLog.txt'
public class FileDownloader: IHttpHandler
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
// This is where you read the log file and add the content disposition
//header
string strPath = Server.MapPath("ErrorLog") + "\\" + context.Request.QueryString["FileName"];
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + context.Request.QueryString["FileName"] + "");
strPath.Length.ToString());
context.Response.ContentType = "application/text";
context.Response.WriteFile(strPath);
context.Response.End();
}
}
答案 1 :(得分:0)
首先在页面类中声明受保护的字符串var:
public partial class YourASPPage : System.Web.UI.Page
{
protected string Alert = "";
protected void Page_Load(object sender, EventArgs e)
{
Alert = "<script type='text/javascript'>alert('something alerted here');</script>";
}
}
然后在你的aspx文件中,当你想要显示你的警报时(不是在脚本标签中)写下类似的东西:
<%= Alert %>
答案 2 :(得分:-1)
在Response.End()之后,从后面的代码调用javascript函数将不起作用;但是可以使用beforeunload,它会在Response.End();
之后触发$(window).bind('beforeunload', function (){
//here your function
});