【问题标题】:Not able to call javascript funtion from c# in Asp.NET无法在 Asp.NET 中从 c# 调用 javascript 函数
【发布时间】:2016-10-14 08:05:25
【问题描述】:

这个问题在这个网站上讨论过很多次,但我没有找到解决问题的方法。

我已经执行了以下步骤。

1.创建了一个 JS 函数。

 function showModal() {
            alert("called");
       }

2。在 .aspx 文件中添加了脚本管理器

 <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>

3.在 .cs 文件中创建了一个方法

 [System.Web.Services.WebMethod()]
        [System.Web.Script.Services.ScriptMethod()] 
        protected void register_user(object sender, EventArgs e)
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), "showModal", "javascript:showModal(); ", true);
            log.Debug("register_user is called");


        }

但它没有调用 JS 函数。

【问题讨论】:

  • @Div.那只是一个错字。

标签: javascript c# asp.net .net


【解决方案1】:

可能是因为你没有关闭你的javascript函数:

function showModal() {
            alert("called");
}

或者你也可以试试这个:

替换你的这一行:

Page.ClientScript.RegisterStartupScript(this.GetType(), "showModal", "javascript:showModal(); ", true);

Page.ClientScript.RegisterStartupScript(this.GetType(), "Message", "showModal(); ", true); // correct

【讨论】:

  • 我根据您的建议进行了修改。还是不行。
【解决方案2】:

首先,我认为从 aspx.cs 调用 Js 函数不是一个好主意。

无论如何,从您的 sn-p 中更改为:

Page.ClientScript.RegisterStartupScript(this.GetType(), "showModal", "showModal()", true);

注意第三个参数:"showModal()"

还有,你的JS函数“showModal()”,点击这个按钮可以工作吗? &lt;input type="button" value="Submit" onclick="showModal();"/&gt;

【讨论】:

    【解决方案3】:

    对我有用的是:

    而不是-

    Page.ClientScript.RegisterStartupScript(this.GetType(), "showModal", "javascript:showModal(); ", true);
    

    我加了 -

    ScriptManager.RegisterStartupScript(this,GetType(), "Message", "showModal();", true);
    

    它成功了。

    【讨论】:

      【解决方案4】:

      你混合了这么多东西。

      如果您想将 Code Behind 中的 javascript 添加到您的 html 中。这应该位于某个全局事件Page_LoadPreRender

      Page.ClientScript.RegisterStartupScript(this.GetType(), "showModal", "YourJavascriptCode", true);
      

      如果你想从 AJAX 调用中调用 aspx 中的方法,应该返回响应

          [System.Web.Services.WebMethod()]
          [System.Web.Script.Services.ScriptMethod()] 
          public static string register_user(object sender, EventArgs e)
          {
               //you can return a class->Json
               return stuff;
          }
      

      如果您想在客户端单击按钮时执行 javascript。我想你想要这个!

          YourButton.Attributes["onclick"]= "javaScriptFunction()";
          //if you want to not execute server side
          YourButton.Attributes["onclick"]= "javaScriptFunction(); return false";
      

      这里是向您的 asp 按钮添加 javascript 功能的最简单方法。

      <asp:Button ID="RegisterBtn" runat="server" Text="Register"  OnClientClick="showModal()" onclick="register_user"/>
      

      【讨论】:

      • 嘿。这只是一个演示 JS 函数。运行成功后我需要添加更多代码行。
      • @DKR 你可以加几百行代码,如果你不明白这3件事他们在做什么,你连1行都加不了
      • 根据您在回答中的修改,如果我想在按钮单击而不是页面加载时调用 JS 函数怎么办?
      • @DKR 你没有用 RegisterStartupScript 调用任何东西,你正在向 html 添加脚本。执行调用时,首先将您的 javascript 方法附​​加到按钮属性 onclick,然后单击按钮。同样首先执行客户端,然后执行服务器端。
      【解决方案5】:

      添加命名空间

      使用 System.Web.UI;

      替换你的这一行:

      Page.ClientScript.RegisterStartupScript(this.GetType(), "showModal", "javascript:showModal(); ", true);

      ScriptManager.RegisterStartupScript(this, this.GetType(), "Message", "showModal();", true);

      效果很好

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-23
        • 2011-11-18
        • 1970-01-01
        • 2010-09-05
        • 2011-04-30
        • 1970-01-01
        • 2012-03-11
        • 1970-01-01
        相关资源
        最近更新 更多