【问题标题】:how to write javascript in asp.net in code behind using C#如何在asp.net中使用C#在代码后面编写javascript
【发布时间】:2011-02-20 08:37:19
【问题描述】:

如何在 asp.net 中使用 C# 编写 JavaScript 代码?

例如: 当我单击要调用此 java 脚本代码的按钮时,我有单击按钮事件:

alert("You pressed Me!"); 

我想知道如何从后面的代码中使用 java 脚本。

【问题讨论】:

  • 我建议考虑使用 jQuery 库而不是纯 Javascript。
  • @大卫。相同的原则适用于两者。毕竟,jQuery 只是 javascript。
  • 确实——但是对于刚开始使用 javascript 的人来说,如果他们使用 jQuery,他们通常会发现他们的开发更加容易。只是传播这个词:)

标签: c# asp.net javascript


【解决方案1】:

其实这是你需要的:

string myScriptValue = "function callMe() {alert('You pressed Me!'); }";
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "myScriptName", myScriptValue, true);

将所有 javascript 复制到字符串中,然后在代码隐藏中将其注册到您的 aspx 页面中。然后在 aspx 页面中,您可以随时调用 javascript 函数。您应该在 C# 页面的 Page_Load 方法中编写此代码。

【讨论】:

  • 谢谢,我还需要在 ScriptManager 前面加上 System.Web.UI。我的 VS2013 项目中已经引用了 System.Web.Extensions。
【解决方案2】:

看看 ScriptManager 类的 RegisterClientScriptBlockRegisterStartupScript 方法。

【讨论】:

    【解决方案3】:

    将一些 javascript 放到页面上的特定位置的一种方法是:

    ASP.Net

    <script type="text/javascript">
    <asp:Literal id="litScript" runat="server" />
    </script>
    

    C#

    litScript.Text = "alert("Hello!");"
    

    当然,你可以在里面放任何东西,我推荐一个 javascript 库。

    使用 Scriptmanager 也是一种选择。

    【讨论】:

    • 当你不得不做一些非常棘手的事情时,我认为这是一个选项,但我不会在这种情况下使用它。
    • 谢谢,这是我正在寻找的解决方案。直接使用&lt;script runat="server"&gt;是不行的,控制变量始终为null。其他 HTML 元素工作正常。这确实会在 HTML 源代码编辑器中引起有趣的颜色...
    【解决方案4】:

    不是答案,而是建议。 在你的代码隐藏中混合你的 js 可能会回来困扰你,我同意 Adrian Magdas 的观点。 每当您需要对 javascript 进行简单的更改/更新时,您都必须重新构建您的项目,这意味着重新部署而不是简单地推出单个 .js 文件。

    【讨论】:

      【解决方案5】:

      类似:

      btnSomething.ClientClick = "alert('You pressed me!');";
      

      您可能还想了解 ScriptManager 控件和输出脚本块。

      【讨论】:

        【解决方案6】:

        正确的答案通常是“你不知道”。最好在 .js 文件中定义代码并使用 jQuery 连接所需的事件。

        $(document).ready(function() {  
         $('#myBtn').click(function() {
          alert('Handler for .click() called.');
        });};
        

        【讨论】:

          【解决方案7】:

          如果您想注册一个将与 UpdatePanel (AJAX) 结合使用的脚本,请使用 Sani Huttunen 指出的 ScriptManager 类。 否则你应该使用ClientScriptManager类(方法Page.ClientScript.RegisterClientScriptBlockPage.ClientScript.RegisterStartupScript

          正如其他用户指出的那样,通常可以而且应该避免在后面的代码上注册脚本。这不是一个很好的做法,只有在没有其他选择的情况下才应该这样做。

          【讨论】:

            【解决方案8】:
            Response.Write("<script language='javascript'>alert('You pressed Me!');</script>");
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-10-15
              • 2011-08-28
              • 1970-01-01
              • 1970-01-01
              • 2017-07-30
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多