javascript - 将 C# 变量值传递给代码隐藏类中生成的脚本中的 JavaScript 变量

标签 javascript c#

我正在尝试创建一个 Asp.net 应用程序,该应用程序根据 SQL 数据库中的数据显示 Google 图表。现在,我只是尝试将 C# int 变量的值传递到 JavaScript 变量中。剩下的我稍后会弄清楚。

我已经创建了 C# 变量: 公共(public)int timcs = 40;

我尝试创建 JavaScript 变量并将其显示在警报框中: var timjs = '<%=timcs %>'; 警报(timjs);

生成的警报框仅显示 <%=timcs %>。

如果我这样做 var timjs = <%=timcs %>; (无引号)它根本不起作用。

我尝试过很多不同的方法,但从来没有奏效。我究竟做错了什么?所有代码如下。

谢谢。

using System;
using System.Web.UI;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;


namespace TheBIGContest
{
    public partial class _Default : System.Web.UI.Page
    {

        public int timsc = 40;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                // Bind Gridview  
                BindGvData();

                // Bind Charts  
                BindChart();
            }
        }

        private void BindGvData()
        {
            gvData.DataSource = GetChartData();
            gvData.DataBind();
        }

        private void BindChart()
        {
            DataTable dsChartData = new DataTable();
            StringBuilder strScript = new StringBuilder();

            try
            {

                dsChartData = GetChartData();

                strScript.Append(@"<script type='text/javascript'>  

                // Load the Visualization API and the corechart package.
                google.charts.load('current', { 'packages': ['corechart'] });</script>

                    <script type='text/javascript'>
                    // Set a callback to run when the Google Visualization API is loaded.
                    google.charts.setOnLoadCallback(drawChart);

                    var timjs = '<%=timcs %>';
                    alert(timjs);

                    // Callback that creates and populates a data table,
                    // instantiates the pie chart, passes in the data and
                    // draws it.

                    function drawChart() {

                    // Create the data table.
                    var data = new google.visualization.DataTable();
                    data.addColumn('string', 'Person');
                    data.addColumn('number', 'Points');
                    data.addRows([ ['Tim', 10], ['Barb', 20], ['Lee Ann', 30] ]);");

                //Set chart options
                strScript.Append("var options = {'title':'Points to Date', chartArea: { left: 43, top: 50, width: '80 %', height: '80%' }, backgroundColor: 'fff', 'width': 610, 'height':450, 'vAxis': { minValue: 0, ticks: [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50]}, 'legend':'none'};");

                // Instantiate and draw our chart, passing in some options.
                strScript.Append("var chart = new google.visualization.ColumnChart(document.getElementById('chart_div')); chart.draw(data, options); }");
                strScript.Append("</script>");

                ltScripts.Text = strScript.ToString();
            }
            catch
            {
            }
            finally
            {
                dsChartData.Dispose();
                strScript.Clear();
            }
        }

        /// <summary>  
        /// fetch data from mdf file saved in app_data  
        /// </summary>  
        /// <returns>DataTable</returns>  
        private DataTable GetChartData()
        {
            DataSet dsData = new DataSet();
            try
            {
                SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString);
                SqlDataAdapter sqlCmd = new SqlDataAdapter("GetData", sqlCon);
                sqlCmd.SelectCommand.CommandType = CommandType.StoredProcedure;

                sqlCon.Open();

                sqlCmd.Fill(dsData);

                sqlCon.Close();
            }
            catch
            {
                throw;
            }
            return dsData.Tables[0];
        }
    }
}

最佳答案

输出标记 <%= %> 在这种情况下不相关,因为您是从代码隐藏类生成客户端代码,而不是实际的 aspx 页面。

更改为

var timjs = " + timcs + @";  ...

它会起作用的。

关于javascript - 将 C# 变量值传递给代码隐藏类中生成的脚本中的 JavaScript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45799125/

相关文章:

javascript - Aurelia - 集合更改后未创建 repeat.for 中的自定义元素

c# - 如何使用 webclient 读取通过 ajax 生成的内容?

c# - 在另一个任务中启动任务会重复我的 WebRequest

C# 打印和线程

c# - 为什么我的交易没有升级为 DTC?

c# - 为什么在乘以非常大的数字时得不​​到正确的结果?

javascript - 发布在 angularjs 中没有按预期工作

javascript - 如何添加和删除一个类来隐藏和显示表格行?

javascript - 在从 getStaticProps 返回的组件中获取未定义的 Prop

javascript - JSON 破坏了我的脚本,但它仍然提取数据