我现在被卡住了。我有一个带有按钮的webform,可以注册或保存记录。 我想要的是让它显示一个javascript警报,然后重定向到一个页面。 这是我正在使用的代码
protected void Save(..)
{
// Do save stuff
DisplayAlert("The changes were saved Successfully");
Response.Redirect("Default.aspx");
}
此代码只是重定向而不提示“已成功保存”提示。
这是我的DisplayAlert代码
protected virtual void DisplayAlert(string message)
{
ClientScript.RegisterStartupScript(
this.GetType(),
Guid.NewGuid().ToString(),
string.Format("alert('{0}');", message.Replace("'", @"\'").Replace("\n", "\\n").Replace("\r", "\\r")),
true
);
}
任何人都可以帮我找到解决方案吗?
由于
答案 0 :(得分:7)
您无法执行Response.Redirect,因为您的javascript警告将永远不会显示。最好让您的javascript代码在显示警报后实际执行重定向windows.location.href='default.aspx'
。像这样:
protected virtual void DisplayAlert(string message)
{
ClientScript.RegisterStartupScript(
this.GetType(),
Guid.NewGuid().ToString(),
string.Format("alert('{0}');window.location.href = 'default.aspx'",
message.Replace("'", @"\'").Replace("\n", "\\n").Replace("\r", "\\r")),
true);
}
答案 1 :(得分:4)
DisplayAlert方法将客户端脚本添加到当前正在执行的页面请求中。当您调用Response.Redirect时,ASP.NET会向浏览器发出HTTP 301重定向,从而启动新的页面请求,其中已注册的客户端脚本不再存在。
由于您的代码在服务器端执行,因此无法显示客户端警报并执行重定向。
此外,显示JavaScript警告框可能会混淆用户的心理工作流程,内联消息将更加可取。也许你可以将消息添加到Session并在Default.aspx页面请求中显示它。
protected void Save(..)
{
// Do save stuff
Session["StatusMessage"] = "The changes were saved Successfully";
Response.Redirect("Default.aspx");
}
然后在Default.aspx.cs代码后面(或一个公共基页类,所以这可能发生在任何页面,甚至主页上):
protected void Page_Load(object sender, EventArgs e)
{
if(!string.IsNullOrEmpty((string)Session["StatusMessage"]))
{
string message = (string)Session["StatusMessage"];
// Clear the session variable
Session["StatusMessage"] = null;
// Enable some control to display the message (control is likely on the master page)
Label messageLabel = (Label)FindControl("MessageLabel");
messageLabel.Visible = true;
messageLabel.Text = message;
}
}
代码未经过测试,但应指向正确的方向
答案 2 :(得分:4)
这很完美:
string url = "home.aspx";
ClientScript.RegisterStartupScript(this.GetType(), "callfunction", "alert('Saved Sucessfully.');window.location.href = '" + url + "';",true);
答案 3 :(得分:1)
protected void Save(..)
{
// Do save stuff
ShowMessageBox();
}
private void ShowMessageBox()
{
string sJavaScript = "<script language=javascript>\n";
sJavaScript += "var agree;\n";
sJavaScript += "agree = confirm('Do you want to continue?.');\n";
sJavaScript += "if(agree)\n";
sJavaScript += "window.location = \"http://google.com\";\n";
sJavaScript += "</script>";
Response.Write(sJavaScript);
}