为什么需要从代码隐藏中调用 JavaScript 函数?

Why would there be a need to call a JavaScript function from code behind?

我刚刚在网上四处寻找关于从代码隐藏调用 JavaScript 函数的信息,从我看到的关于单击事件的 RegisterStartupScript 方法的示例中。但是,为什么您想要或需要这样做而不是将其连接到 OnClientClick 事件? 是否需要从后台代码调用 JavaScript 函数?

RegisterStartupScript 是适用于无数场景的众多选项之一。最后,您可以使用 RegisterStartupScript 做的任何事情都可以通过其他方式完成。我曾经认为它是一种方便,现在我避免它,关注点分离和 "enlightenment".

的更高阶段

我看到 RegisterStartupScript 仍在使用的主要地方是自定义控件,这些控件预计会在最终用户对它们一无所知的情况下自行连接。请参阅 AjaxControlToolKit, UpdatePanel, ScriptManager 等。它们都需要 javascript,但出于显而易见的原因,不要期望您包含它们的客户端脚本或注册它们。

随机场景:

if (User.Identity.Name == "Frank")
    RegisterStartupScript(this, GetType(), "Frank", "alert("Hey Frank, you owe me money!");

替代方案,让服务器端设置一个隐藏字段。

<input type="hidden" id="name" value="<%= User.Identity.Name %>" />

<script type="text/javascript">
    $(document).ready(function() {
        if ($("#name").val() == "Frank")
            alert("Hey Frank, you owe me money!");
    });
</script>