You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C#在客户端网站引入从SQL Server获取的脚本?

在C#中引入客户端脚本的几种实现方式

针对你从SQL获取的Bitrix24按钮脚本,以下是不同C# Web框架下的具体实现方法:

1. ASP.NET Web Forms 场景

后台代码注册脚本

直接在后台逻辑中把脚本注册到页面,自动生成<script>标签:

protected void Page_Load(object sender, EventArgs e)
{
    // 替换为你的SQL查询逻辑,获取脚本字符串
    string scriptFromSql = @"(function (w, d, u) {
        var s = d.createElement('script'); s.async = true; s.src = u + '?' + (Date.now() / 60000 | 0);
        var h = d.getElementsByTagName('script')[0]; h.parentNode.insertBefore(s, h);
    })(window, document, 'https://cdn.bitrix24.vn/b23267373/crm/site_button/loader_2_pqn2tk.js');";

    // 注册脚本,第四个参数为true会自动添加<script>标签
    ClientScript.RegisterStartupScript(this.GetType(), "Bitrix24ButtonScript", scriptFromSql, true);
}

页面中动态输出脚本

在aspx页面里直接调用后台方法输出脚本:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="YourPage.aspx.cs" Inherits="YourProject.YourPage" %>

<!DOCTYPE html>
<html>
<head runat="server">
    <title>Your Page</title>
    <script type="text/javascript">
        <%= GetScriptFromDatabase() %>
    </script>
</head>
<body>
    <!-- 页面内容 -->
</body>
</html>

后台对应的方法:

protected string GetScriptFromDatabase()
{
    // 此处编写从SQL查询脚本的逻辑
    return @"(function (w, d, u) {
        var s = d.createElement('script'); s.async = true; s.src = u + '?' + (Date.now() / 60000 | 0);
        var h = d.getElementsByTagName('script')[0]; h.parentNode.insertBefore(s, h);
    })(window, document, 'https://cdn.bitrix24.vn/b23267373/crm/site_button/loader_2_pqn2tk.js');";
}

2. ASP.NET MVC/Razor Pages 场景

Razor视图中直接输出

在.cshtml视图里用Html.Raw()避免脚本被HTML编码:

@{
    ViewData["Title"] = "Home Page";
    // 替换为你的SQL查询逻辑
    var scriptFromSql = @"(function (w, d, u) {
        var s = d.createElement('script'); s.async = true; s.src = u + '?' + (Date.now() / 60000 | 0);
        var h = d.getElementsByTagName('script')[0]; h.parentNode.insertBefore(s, h);
    })(window, document, 'https://cdn.bitrix24.vn/b23267373/crm/site_button/loader_2_pqn2tk.js');";
}

<script type="text/javascript">
    @Html.Raw(scriptFromSql)
</script>

<!-- 页面其他内容 -->

控制器返回脚本(AJAX动态加载)

如果需要前端通过AJAX获取脚本,可在控制器中返回脚本内容:

public ActionResult GetBitrix24Script()
{
    // 从SQL查询获取脚本字符串
    string script = @"(function (w, d, u) {
        var s = d.createElement('script'); s.async = true; s.src = u + '?' + (Date.now() / 60000 | 0);
        var h = d.getElementsByTagName('script')[0]; h.parentNode.insertBefore(s, h);
    })(window, document, 'https://cdn.bitrix24.vn/b23267373/crm/site_button/loader_2_pqn2tk.js');";
    
    return Content(script, "application/javascript");
}

前端AJAX调用示例:

fetch('/Home/GetBitrix24Script')
    .then(res => res.text())
    .then(script => {
        const scriptTag = document.createElement('script');
        scriptTag.textContent = script;
        document.head.appendChild(scriptTag);
    });

3. 通用注意事项

  • 从SQL读取脚本时,必须校验内容安全性,防止注入恶意代码。
  • 处理脚本字符串时注意转义问题,避免出现JavaScript语法错误。

内容的提问来源于stack exchange,提问作者Hiếu Lưu Trọng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:10:26