Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 页面_Init上的警报消息_C#_Javascript_Alert_Code Behind_Page Init - Fatal编程技术网

C# 页面_Init上的警报消息

C# 页面_Init上的警报消息,c#,javascript,alert,code-behind,page-init,C#,Javascript,Alert,Code Behind,Page Init,我有一个由PageBase类调用的安全类(所有页面都将从该类继承),如果用户尝试访问未授权查看的页面,该类会将用户重定向到主页或登录页面(取决于他们是否登录)。我想通过这样的方式提醒用户 “您无权查看此页面,正在重定向您” 或者类似的。我知道您可以从codebehind调用javascript向用户显示警报 在我的PageBase类中(同样,所有页面都将从中继承),有一个公共的Page_Init(..)方法,当我尝试从那里调用我的js alert时,什么都没有发生。我在代码中设置了断点,代码被命

我有一个由PageBase类调用的安全类(所有页面都将从该类继承),如果用户尝试访问未授权查看的页面,该类会将用户重定向到主页或登录页面(取决于他们是否登录)。我想通过这样的方式提醒用户

“您无权查看此页面,正在重定向您”

或者类似的。我知道您可以从codebehind调用javascript向用户显示警报

在我的PageBase类中(同样,所有页面都将从中继承),有一个公共的Page_Init(..)方法,当我尝试从那里调用我的js alert时,什么都没有发生。我在代码中设置了断点,代码被命中,但用户没有收到警报。我认为这是因为Page_Init在页面的生命周期中太早,无法执行js,这就是导致此问题的原因

有没有一种方法可以避免在每个页面上都添加函数?此外,以下是我尝试过的两种方法:

System.Web.UI.Page page = HttpContext.Current.CurrentHandler as System.Web.UI.Page;
System.Web.UI.ScriptManager.RegisterStartupScript(page, page.GetType(), "alert", "alert('You do not have access to this page. You are being redirected')", true);

Response.Write(“警报('您无权访问此页面。您正在被重定向”);

问题不在于页面上没有任何页面。问题是,服务器没有向浏览器发送任何内容,因为现在还太早。(更多信息)

在正常情况下,响应数据在渲染事件之前不会发送到浏览器,即使调用response.Write。这通常可以通过在响应后立即调用来强制执行。但这通常会产生意想不到的后果。在Page_Init循环中,我认为调用Response.Flush()可能会给您带来很多问题

只需创建一个带有“we're redirecting”消息的静态html页面,并使用javascrip.SetTimeout方法倒计时,并在几秒钟后使用javascript重定向,您可能会得到更好的服务。多年来,网络上就是这样做的。当用户未经授权时,您的基类可以简单地重定向到此页面

“重定向”页面的代码


函数delayedRedirect(){
window.location=“/default.aspx”
}
您无权查看此页面,正在重定向您

问题不在于页面上没有任何页面。问题是,服务器没有向浏览器发送任何内容,因为现在还太早。(更多信息)

在正常情况下,响应数据在渲染事件之前不会发送到浏览器,即使调用response.Write。这通常可以通过在响应后立即调用来强制执行。但这通常会产生意想不到的后果。在Page_Init循环中,我认为调用Response.Flush()可能会给您带来很多问题

只需创建一个带有“we're redirecting”消息的静态html页面,并使用javascrip.SetTimeout方法倒计时,并在几秒钟后使用javascript重定向,您可能会得到更好的服务。多年来,网络上就是这样做的。当用户未经授权时,您的基类可以简单地重定向到此页面

“重定向”页面的代码


函数delayedRedirect(){
window.location=“/default.aspx”
}
您无权查看此页面,正在重定向您

您需要在基本页面上实现页面上的逻辑\u加载事件,如下所示:

ScriptManager.RegisterStartupScript(this, this.GetType(), "keykey", "alert('You do not have access to this page. You are being redirected'); window.location='http://caracol.com.co';", true);

您需要在基页上实现页面逻辑加载事件,如下所示:

ScriptManager.RegisterStartupScript(this, this.GetType(), "keykey", "alert('You do not have access to this page. You are being redirected'); window.location='http://caracol.com.co';", true);

是的…我不确定该怎么说…但我想这就是问题所在。有没有办法解决这个问题,因为安全类完成的所有工作都是在
Page_Init
期间完成的?我并不反对使用C#编码来制作定制警报,我只需要提醒用户一些我所希望的解决方案,但它确实有效:)谢谢!是的…我不确定该怎么说…但我想这就是问题所在。有没有办法解决这个问题,因为安全类完成的所有工作都是在
Page_Init
期间完成的?我并不反对使用C#编码来制作定制警报,我只需要提醒用户一些我所希望的解决方案,但它确实有效:)谢谢!这是我试图避免的,因为每个页面都有自己的
page\u Load
事件,但我试图实现的安全逻辑在
page\u Init
事件期间在父
PageBase
类中控制,我不知道我是否理解,但。。。你能不能把安全逻辑移到PageBase上的OnLoad并用这种方式解决它?这就是我试图避免的,因为每个页面都有自己的
page\u Load
事件,但是在
Page_Init
事件期间,我试图实现的安全逻辑在父
PageBase
类中进行控制,我不知道我是否不理解,但是。。。难道你不能把安全逻辑移到PageBase上的OnLoad并用这种方式解决吗?
ScriptManager.RegisterStartupScript(this, this.GetType(), "keykey", "alert('You do not have access to this page. You are being redirected'); window.location='http://caracol.com.co';", true);