从c#代码后面触发Javascript

时间:2012-02-20 18:25:49

标签: c# javascript asp.net

我知道在StackOverflow上有几百个这样的问题的答案,但我不是'得到它'。

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

  1. 我无法以OnClientClick的身份执行此操作,因为我正在使用OnClick进行其他处理,并且无法让它们共同行动。

  2. 我不太了解我读过的很多东西。我是ASP.NET和C#的新手,可以使用一点手持。

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

  4. 我的相关伪代码(工作与否):

    服务器端:

    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背景时并不容易自学。任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:3)

您始终可以使用以下方式编写javascript:

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

或者:

ScriptManager.RegisterStartupScript(..);

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

您需要使用正确的参数调用函数HideContent。注册一个可以完全执行此操作的脚本。

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