【问题标题】:How to run javascript from c# in asp.net如何在asp.net中从c#运行javascript
【发布时间】:2015-06-02 05:32:05
【问题描述】:

我是 Asp.Net 的新手,我的 asp 页面是这样的

<%@ Page Title="" Language="C#" MasterPageFile="~/Main.Master" AutoEventWireup="true" CodeBehind="TestJs.aspx.cs" Inherits="tms.Test.TestJs" %>

<asp:Content ID="Content1" ContentPlaceHolderID="StyleSection" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentSection" runat="server">
    <div class="container">
        <div class="panel">
            <asp:Button ID="btnAlert" OnClick="btnAlert_OnClick" runat="server"/>
        </div>
    </div>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ScriptSection" runat="server">
    <script type="text/javascript">
        function myFunc() {
            $.alert("Hello Mz");
        }
    </script>
</asp:Content>

我的 .cs 文件看起来像这样

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace tms.Test
{
    public partial class TestJs : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnAlert_OnClick(object sender, EventArgs e)
        {
            ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "newFunc", "myFunc()", true);
        }
    }
}

当我单击按钮时,脚本不会调用并给出一些预期的对象错误。

我真的陷入了困境。请帮我。 提前致谢。

【问题讨论】:

  • 试试这个 ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "newFunc", "myFunc()", false); 做最后一个 argumanet false
  • @MairajAhmad:是的,让我检查一下并回复你。
  • @MairajAhmad:它有效,但没有显示警报。 “myFunc()”打印在我的页面顶部。
  • alert("Hello Mz")替换$.alert("Hello Mz");;

标签: javascript c# asp.net scriptmanager


【解决方案1】:

在按钮点击事件中可以调用scriptmanager

protected void btn_click(object sender, EventArgs e){
ScriptManager.RegisterStartupScript(this,this.GetType(),"Your Comment","myFunc();", true);}

如下更改你的脚本:

<script type="text/javascript">
    function myFunc() {
        alert("Hello Mz");
    }
</script>

【讨论】:

  • 请问我把这段代码放在哪里。在按钮单击事件或 Page_Load 事件上。
  • 它应该可以完美运行。您必须将代码放在按钮单击事件中,而不是页面加载中。
  • 替换 $.alert("Hello Mz"); with alert("Hello Mz");
  • var script = String.Format(@"alert('Hello Mz');"); ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "mzFunc", script, true); - 我试过了,它奏效了
  • 您确定您的 myFunc() 正在页面中呈现吗?因为它在不同的内容占位符下。尝试将您的 块放在 ContentSection 占位符中。
【解决方案2】:

首先,我不明白你为什么在这里使用ScriptManager。 ASP Button 有一个名为onClientClick 的属性。请参阅此MSDN link 了解更多信息。

您可以在 HTML 中更改按钮的代码,例如:

<asp:Button ID="btnAlert" OnClick="btnAlert_OnClick" onClientClick="myFunc();" runat="server"/>

注意:onClientClick 将在onClick 事件之前执行。 这是我脑子里写的,未经测试!

【讨论】:

  • 是的,你是对的。但实际上我想在后面做一些 C# 代码,然后我想调用 js。但它不起作用,所以我创建了一个这样的测试页并请你指导我。
猜你喜欢
  • 2023-04-08
  • 2016-07-05
  • 1970-01-01
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-11
相关资源
最近更新 更多