【问题标题】:Access server side variable in javascript/jquery in asp.net在 asp.net 中的 javascript/jquery 中访问服务器端变量
【发布时间】:2018-10-23 06:08:57
【问题描述】:

我正在开发 asp.net 网络表单应用程序。我需要访问从 javascript/jquery 中的数据库返回的数据表。

但问题是我无法获得价值。我尝试在课堂和会话中声明它,但没有奏效。

如果我尝试提醒它,我会变得空白。

这是我的代码..

在页面加载时.. 有嵌套方法用于在 GridView 中加载数据。现在我也想在客户端获取相同的数据,以便我可以在谷歌地图上显示..

Page_load 事件中,我下面是从数据库中获取数据的代码

this.gvGmap.DataSource = null;
        GmapDataTable = GetDataTable("someparameter to get data from db");
        Session["GmapDataTable"] = GmapDataTable;
        this.gvGmap.DataSource = GmapDataTable;
        this.gvGmap.DataBind();

现在我尝试了两种不同的方法来获取此数据客户端.. 但它是空白的

第一个

var mJSVariable = <%:GmapDataTable %>;
    alert(mJSVariable);

第二次会议方法

var yourVariable = '<%= Session["GmapDataTable"] %>';
    alert(yourVariable);

【问题讨论】:

  • 你试过var mJSVariable = '&lt;%:GmapDataTable %&gt;';吗?
  • 是.. 渲染时显示为空白...可能是先执行 javascript 但服务器端代码.. 仍在运行
  • GmapDataTable 是否包含 DataTable 对象? “空白”是什么意思 - 它是否不包含值或 DataTable 的类型名称?
  • 从服务器端..它将返回数据表..但是在渲染时..它显示 var sessionValue = ''; var yourVariable = '';
  • 可能您需要对其进行序列化,使用JavaScriptSerializerJsonConvert.SerializeObject 将ASPX 页面内的DataTable 内容作为JSON 传递,并使用JSON.parse() 在JS 变量分配上对其进行解码。

标签: javascript jquery asp.net


【解决方案1】:

如果您的数据只是与您当前的页面链接并且不是很大,那么使用视图状态而不是会话,这不会在您的服务器上产生太多负载。而不是直接在客户端访问会话将其分配给一个属性,这将使您的代码更可重用。您可以海化您的数据表。View State Vs session

虽然使用 session 你可以通过以下方式来做。

   `public static DataTable GmapDataTableProperty
    {
        set { HttpContext.Current.Session["GmapDataTable"] = value; }
        get
        {
            if (HttpContext.Current.Session["GmapDataTable"] != null)
            {
                return (DataTable)HttpContext.Current.Session["GmapDataTable"];
            }

            return null;
        }
    }

GmapDataTableProperty = GmapDataTable; `

像这样在客户端访问它

var mJSVariable = &lt;%= GmapDataTableProperty %

【讨论】:

  • 想象DataTable 的大小很大(超过一千行),ViewState 可能会在Page_Load 事件上导致性能损失。我强烈反对使用它来存储潜在的大型对象。
  • 是的,如果数据量很大,那么你是对的,然后使用会话
【解决方案2】:

您通过会话的方法是正确的,但是您需要将会话对象转换为 DataTable 对象,确保您的会话变量不为空。

var myValue = '<%= ((System.Data.DataTable)Session["dt"]).Rows[0][0] %>';
alert(myValue);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2011-03-15
    相关资源
    最近更新 更多