Trigger Javascript from c# codebehind

Trigger Javascript from c# codebehind

本文关键字:codebehind from Javascript Trigger      更新时间:2023-09-26

我知道StackOverflow上有几百个这样的问题的答案,但我只是不"明白"。

我在C#/asp.net中有一个购物车。在产品页面上有一个"预订"按钮。当第一次单击该按钮时,我希望它隐藏产品详细信息面板(名为ProdDet)并显示日历面板。我面临的挑战是:

  1. 我不能作为OnClientClick来做,因为我正在使用OnClick来做其他处理,并且不能让它们一起工作。

  2. 我读过的很多东西我都不懂。我对ASP.NET和C#还很陌生,可以使用一些手持操作。

  3. 在我的代码中有几个地方我想使用HidePanel和ShowPanel

我的相关伪代码(工作和不工作):

服务器端:

public void CalendarButton_Click(object sender, EventArgs e)
{
    some processing 
    if (everything ok) {
       CalendarLiteral.Text += "<iframe...";
       Hide_Panel(); // not working.
    }
}
public void HidePanel()
{
       Page.ClientScript.RegisterStartupScript(
         ...just not getting it or even sure this is the right thing to do.
       );
}

头部客户端:

<script type="text/javascript">
      function HideContent(d) {
      document.getElementById(d).style.display = "none";
      Alert("Hiding " + d);
      }
</script>

这并不是很糟糕,但有些服务器/客户端/.NET的东西在直接使用C语言的背景下并不容易自学。感谢您的帮助!

您可以始终使用编写javascript

Page.ClientScript.RegisterStartupScript(key, "HideContent('" + ControlID.ClientID + "');", true);

或者:

ScriptManager.RegisterStartupScript(..);

列出的参数可能不准确,但这基本上是你可以做的。如果你有对服务器上控件的引用,你可以用这种方式调用客户端上的方法。

您需要用正确的arrgument调用函数HideContent。注册一个可以做到这一点的脚本。

Page.ClientScript.RegisterStartupScript(this.GetType(),"Script name",
"<script type=text/javascript> 
HideContent('foo') 
</script>");

我不确定我是否得到了你需要的东西,但你为什么不把东西包装在不同的。。。

<asp:Panel ID="pnl1"...

您可以在代码中设置pnl1.visible = false或true。