当前位置:编程学习 > C#/ASP.NET >>

如何将数据传递给页面?

是这样,我的页面有个google map, 里面需要动态加载location。

map的js有一段是这样

var latlng = new google.maps.LatLng(lng, lat);
        
我想从c#代码端加载lng和lat给js

我改写成了var latlng = new google.maps.LatLng(<%# Eval("lng") %>, <%# Eval("lat") %>);

但是不管c#里面的数据lng和lat是多少,这个都没有数据。

c#端,不管我这样申明: public double lat, lng; 或按照属性的方法申明,都不能传递数据到js里。。。 不知道我哪里没对?

对了,c#端,我的lat和lng是在Page_load中赋值的。

请大家不吝指点,谢谢! --------------------编程问答-------------------- 看你放哪里了,你要是放到xxx.js文件里面,那么恭喜你,你的确接不到后面的数据

如果是这种你就需要把东西放到aspx文件里面

另外<%# Eval("lng") %>是放在数据绑定控件中的写法
如果是非数据绑定控件,你的写法应该是<%=lng.ToString()%> --------------------编程问答-------------------- 你好, 我是直接放在aspx文件里的, 改成你说的<%=lng.ToString()%>了,数据虽然不是null值了,但依然是0,不知道为啥呢。。。 我检查过,在Page_Load中是成功设置了的。 --------------------编程问答-------------------- 使用 # 开头的绑定表达式,你需要在 Page_PreRender 事件出了程序中执行 Page.DataBind()。

实际上到底哪里执行 DataBind() 完全是你随意安排的,但是不能不执行它。 --------------------编程问答--------------------
引用 3 楼 sp1234 的回复:
使用 # 开头的绑定表达式,你需要在 Page_PreRender 事件出了程序中执行 Page.DataBind()。

实际上到底哪里执行 DataBind() 完全是你随意安排的,但是不能不执行它。


你好,我在Page_load中这样写的
lat = 20.00;
lng = 100.00;
Page.DataBind();
但依然在js端显示的是0,不是我想要的数据。。。。 --------------------编程问答-------------------- 但是 # 开头的表达式要放在服务器控件的属性中,而不是随便写在字符串中。

在一个页面上要输出 javascript 代码,你可以通过 RegisterClientScriptBlock 写到html中。写出的内容是你自己拼的。例如你可以使用这个方法写出整个你的脚本,也可以仅仅写出两个javascript变量的初始值。

例如 
var js="var lng=164.39; var lat=39.8;";
把这个字符串写到html中,就够了。
--------------------编程问答-------------------- 你非要说是0,那俺们就没办法想了

只能建议你把字段换成属性,并在set和get方法里,放入trace代码,同时启动页面的trace机制
看看生成顺序,赋值顺序,获取顺序是不是你认为的那样了 --------------------编程问答--------------------
引用 4 楼 wentihenduo 的回复:
你好,我在Page_load中这样写的
lat = 20.00;
lng = 100.00;
Page.DataBind();
但依然在js端显示的是0,不是我想要的数据。。。。

我给你写个demo吧
<%@ Page Language="C#" %>

<!DOCTYPE html>
<script runat="server">

    protected string aa { get; set; }
    protected string bb { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        aa = "中国人";
        bb = "日本鸡";
    }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        this.PlaceHolder1.DataBind();
    }
</script>


<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>演示如何绑定数据到脚本</title>
    <asp:PlaceHolder ID="PlaceHolder1" runat="server">
        <script type="text/javascript">
            alert('<%# aa %> 恼杀 <%# bb %>');
        </script>
    </asp:PlaceHolder>
</head>
<body>
</body>
</html>
--------------------编程问答-------------------- 首先,写#开头的绑定表达式,要在一个asp.net服务器控件里(但是不一定是在<Form>里)。其次,你需要调用DataBind(),才能(随时)绑定数据给服务器控件。

就是这么简单。


不过对于动态输出脚本,我认为写 RegisterClientScriptBlock 也是一种比较规范的做法。例如你可以写
<%@ Page Language="C#" %>

<!DOCTYPE html>
<script runat="server">

    protected string aa { get; set; }
    protected string bb { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        aa = "中国人";
        bb = "日本鸡";
    }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        this.PlaceHolder1.DataBind();
        ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "初始化经纬度", "var lng=106.4; var lat=39.8;", true);
    }
</script>


<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>演示如何绑定数据到脚本</title>
    <asp:PlaceHolder ID="PlaceHolder1" runat="server">
        <script type="text/javascript">
            onload = function () {
                alert('<%# aa %> 恼杀 <%# bb %>');
                alert('<%# bb %>再占 东经' + lng + '北纬' + lat);
            };
        </script>
    </asp:PlaceHolder>
</head>
<body>
    <form runat="server"></form>
</body>
</html>
--------------------编程问答-------------------- 放到js的话需要用ajax,返回json数据类型,然后把json数据转换成data对象,这样的话就可以使用json数据里的数据了
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,