C# 如何从代码隐藏触发jQuery函数?

C# 如何从代码隐藏触发jQuery函数?,c#,javascript,jquery,asp.net,C#,Javascript,Jquery,Asp.net,我试图从ASP.NET代码中调用jQuery函数 我不希望它被jqueryclick事件触发;我想在我的控件后面的代码中触发jQuery函数-->“显示对话框” $(document).ready(function () { $("#LinkButton1").click(function(){ $("#hightlight_show1").toggle(); }); var dialog1 = $("#Add").dialog({

我试图从ASP.NET代码中调用jQuery函数

我不希望它被jqueryclick事件触发;我想在我的控件后面的代码中触发jQuery函数-->“显示对话框”

$(document).ready(function () {
    $("#LinkButton1").click(function(){
        $("#hightlight_show1").toggle();
    });

    var dialog1 = $("#Add").dialog({
            autoOpen: false,
            width: 620,
            height: 400
    });

    // Move the dialog back into the <form> element 
    dialog1.parent().appendTo(jQuery("form:first"));

    $("#BT_add").click(function () {
       $("#Add").dialog("open");
       return false;
});

服务器端(c#)操作似乎很难影响客户端(jQuery)事件。您需要使用ajax从启动事件的服务器请求信息


请记住,c#/ASP代码在web服务器上运行,它的工作只是根据请求将HTML发送到浏览器。此后,其作用基本完成。JavaScript和jQuery等由浏览器解释,但仅在文档离开服务器很久之后。有一些“方法”可以让c触发非常松散的jQuery事件,但最终你仍然必须识别客户端(浏览器)和web服务器之间的区别。

你不能从代码后面触发JavaScript函数。您可以在html页面上定义JavaScript函数,并使用Control.Attributes.Add在服务器端绑定单击事件。您将需要服务器控件来绑定事件,您可以通过put runat=“server”使html控件服务器可访问

Javascript

代码隐藏


首先,将
函数a(){
移出
$(文档).ready()

但您可能仍然对执行顺序有问题


如果这是完全回发,则使用另一个
$(document.ready()
)将
a()
调用包装在
RegisterStartupScript
中。如果它是从
UpdatePanel
进行的部分回发,只要在第一次加载页面时正确创建了对话框,它就应该工作。

您的声明
函数a()
文档中。就绪
功能

Register.StartupScript会将代码添加到document.onload,您是否确定触发了哪个事件(就绪还是onload)

在document.ready之外声明它,它可能会工作。类似以下内容:

<script type="text/javascript>

function a() {
    $("#Add").dialog("open");
    return false;
};

$(document).ready(function () {
     $("#LinkButton1").click(function(){
         $("#hightlight_show1").toggle();
     });

     // Move the dialog back into the <form> element 
     dialog1.parent().appendTo(jQuery("form:first"));

     var dialog1 = $("#Add").dialog({
         autoOpen: false,
         width: 620,
         height: 400
     });
});

不确定这是否真的是您的问题,但在“您尝试的代码”中,您缺少脚本标记声明上的结束双引号(“)

您写道:
type=“text/javascript

但是从来没有关闭过声明……这肯定会让JS在其他情况下工作时陷入混乱。

这样做吧

标记

<script type="text/javascript">
    function ShowPopup(message) {
        $(function () {
            $("#dialog").html(message);
            $("#dialog").dialog({
                title: "jQuery Dialog Popup",
                buttons: {
                    Close: function () {
                        $(this).dialog('close');
                    }
                },
                modal: true
            });
        });
    };
</script>
<div id="dialog" style="display: none">
</div>
<asp:Button ID="btnShowPopup" runat="server" Text="Show Popup" OnClick="btnShowPopup_Click" />

下载C#和VB中的工作演示这可能是一个很好的解决方案,但它对我的情况不起作用,可能是我在其他地方搞砸了。你使用的是哪个版本的J-query库。如果你的东西在更新面板中,那么你需要在end request函数中再次初始化对话框。你有错误吗?Check你的浏览器的javascript控制台。我用了不同的方法来解决这个问题,花了太多时间在jquery上。谢谢
function  YourFun(){
    $("#hightlight_show1").toggle();
}
hightlight_show1.Attributes.Add("onclick", "YourFun();");
<script type="text/javascript>

function a() {
    $("#Add").dialog("open");
    return false;
};

$(document).ready(function () {
     $("#LinkButton1").click(function(){
         $("#hightlight_show1").toggle();
     });

     // Move the dialog back into the <form> element 
     dialog1.parent().appendTo(jQuery("form:first"));

     var dialog1 = $("#Add").dialog({
         autoOpen: false,
         width: 620,
         height: 400
     });
});
<script type="text/javascript">
    function ShowPopup(message) {
        $(function () {
            $("#dialog").html(message);
            $("#dialog").dialog({
                title: "jQuery Dialog Popup",
                buttons: {
                    Close: function () {
                        $(this).dialog('close');
                    }
                },
                modal: true
            });
        });
    };
</script>
<div id="dialog" style="display: none">
</div>
<asp:Button ID="btnShowPopup" runat="server" Text="Show Popup" OnClick="btnShowPopup_Click" />
  protected void btnShowPopup_Click(object sender, EventArgs e)
{
    string message = "Message from server side";
    ClientScript.RegisterStartupScript(this.GetType(), "Popup", "ShowPopup('" + message + "');", true);
}