一旦aspx弹出消息

时间:2016-06-21 03:02:04

标签: javascript c# asp.net

目前我遇到弹出消息的问题。

第一次点击“下一步”按钮时,应该提示消息。

当我们转到下一页并返回上一页时,点击相同的NEXT按钮,弹出的消息不会出现。

我该如何解决这个问题?

这是按钮代码

 <asp:Button ID="Button1" runat="server" onclick="Button1_Click1" Text="Next" Width="100px" />

这是我clickedOnce的函数()

<script type="text/javascript">
        window.document.onload = function()
        {
            var clickedOnce = false;

            Button1.Button1_Click1 = function ()
            {

               if(!confirm('Please make sure the employee particulars and reporting line details are correct before save. \nClick OK to save and continue if all details are correct.\nClick Cancel and contact HR Admin if details appear is not up to date.'))return false;
                    clickedOnce = true;

                }
            }
</script>

谢谢。你的善意和帮助非常感谢。

3 个答案:

答案 0 :(得分:2)

好吧,既然你只想运行一次,你能不能给用户一个cookie,直到浏览会话结束时他们点击按钮?如果他们有cookie,那么你可以跳过你只想运行一次的代码行。

答案 1 :(得分:2)

您的代码根本不起作用。主要问题是如何尝试捕获点击事件。

<asp:Button ID="Button1" runat="server" onclick="Button1_Click1" Text="Next" />

这意味着Button1_Click1功能在服务器上运行。没有客户端事件发生。要在客户端执行某些操作,您必须在按钮声明中添加onclientclick="someFunction()" 好的,你添加这个。现在转到javascript。

function someFunction(){
   var clickOnce = getCookie('clickOnce');
   //Look @Darkrifts comment (link) how to do it.
   //Just in case I reproduce the link http://www.w3schools.com/js/js_cookies.asp
   if(!clickOnce || confirm('blah blah')){
      document.cookie = 'clickOnce=1';
      //no need to return anything
   }
   //if a visitor doesn't click "ok" then the popup appear again
}

也可以在服务器端设置Session["clickOnce"] = true;并从Page_Load服务器端处理程序使用它,但如果访问者使用浏览器Back按钮返回页面,它可能无效。

protected void Button1_Click1(object sender, EventArgs e){
   Session["clickOnce"] = true;
   //more code
}
protected void Page_Load(object sender, EventArgs e){
   if(Session["clickOnce"] != true)
     Button1.OnClientClick = "someFunction()";
   else
     Button1.OnClientClick = "";
   //more code
}

答案 2 :(得分:0)

这可以通过多种方式实现。您需要根据需要选择最有效的方法。首先,您需要了解ASP.Net page life cyclepersisting information between pagesViewState

简而言之......

每当您的页面重新加载页面中的所有元素(包括JavaScript变量,无论是全局变量还是局部变量)时,都会初始化。然后ASP.Net中的一个功能开始发挥作用。即ViewState。如果在页面级别或每个控件中将其设置为true,则它将保留页面中控件的信息(取决于您如何设置此控件)。但是,这是特定于页面的。

并且,您可以使用以下方法在页面之间保留信息

  • 查询字符串
  • 会话变量
  • 高速缓存
  • 表格帖子
  • 缓存
  • 数据存储(例如文本,xml或任何其他数据库/数据存储)

在使用上述任何一种方法之前,您必须考虑您的要求。 @Alex Kudryashev在我写这个答案时提出了一个很好的例子。如果您需要使用不同的方法或任何说明,请告诉我。