加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

将asp.net值传递给javascript块

发布时间:2020-12-16 09:50:02 所属栏目:asp.Net 来源:网络整理
导读:我需要将我的asp.net代码中的值传递给页面中的 javascript代码块. 我知道至少有两种方法可以做到这一点: script runat=serverint a = 42;protected override void OnInit(EventArgs e){ lbl.Text = "42";}/scriptscript var a = %= a %; var b = asp:Litera
我需要将我的asp.net代码中的值传递给页面中的 javascript代码块.

我知道至少有两种方法可以做到这一点:

<script runat=server>
int a = 42;
protected override void OnInit(EventArgs e)
{
   lbl.Text = "42";
}
</script>

<script>
   var a = <%= a %>;
   var b = <asp:Literal runat=server id=lbl>/>;
   alert("the meaning of life=" + a + " or " + b);
</script>

但是在asp.net WebForms中有更好的方法将asp.net代码中的变量值绑定到javascript块吗?这两个看起来都很混乱,因为它们不支持intellisense.

解决方法

我最终做了一些我认为更强大的事情.在母版页中我添加了这个:

public Dictionary<string,object> JavaScriptVars { get; set; }

然后我将此函数的结果追加到页面:

public string GetJavaScriptVars()
{
    if (JavaScriptVars.Count == 0) return null;
    StringBuilder sb = new StringBuilder();
    sb.Append("<script>");
    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
    int i = 0;
    foreach (string s in JavaScriptVars.Keys)
    {
        if (i == 0)
            sb.Append("var ");
        sb.Append(s + "=");

        object o = JavaScriptVars[s];
        if (o is System.Collections.Specialized.NameValueCollection)
        {
            Dictionary<string,string> dict = new Dictionary<string,string>();
            foreach (string key in ((System.Collections.Specialized.NameValueCollection)o).Keys)
                dict[key] = ((System.Collections.Specialized.NameValueCollection)o)[key];
            o = dict;
        }
        sb.Append(serializer.Serialize(o));
        sb.Append(i == JavaScriptVars.Count - 1 ? ";" : ",");
        i++;
    }
    sb.Append("</script>");
    return sb.ToString();
}

所以现在我可以这样做:

JavaScriptVars["Name"] = "John"; //string
JavaScriptVars["Age"] = 32; //int
JavaScriptVars["Hobbies"] = new string[]  { "Sewing","Hiking" }; //array

在我的最后一页中,我得到:

<script>
    var Name='John',Age=32,Hobbies=["Sewing","Hiking"];
</script>

所以现在我有一种强大的方法可以将没有脚本块或标签的正确管理类型的值传递给页面.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读