DataBinding: 'System.Char' 不包含名称为 'xxxxx' 的 属性

DataBinding: 'System.Char' does not contain a property with the name 'xxxxx'

DataBinding:'System.Char' 不包含名称为 'City' 的 属性。 我从 xml 文件中检索数据,我想将此字段放入带有 JavaScript 的转发器中,以便 Google 映射数据绑定时发生的情况。

<body>
    <form id="form1" runat="server">
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?      sensor=false"></script>
    <script type="text/javascript">
        var markers = [
        <asp:Repeater ID="rptMarkers" runat="server">
        <ItemTemplate>
                 {
                "title": '<%# Eval("City") %>',
                 "lat": '<%# Eval("Latitude") %>',
                 "lng": '<%# Eval("Longitude") %>',
                
             }
    </ItemTemplate>
    <SeparatorTemplate>
        ,
    </SeparatorTemplate>
    </asp:Repeater>
    ];
    </script>
    <script type="text/javascript">

        window.onload = function () {
            var mapOptions = {
                center: new google.maps.LatLng(markers[0].lat, markers[0].lng),
                zoom: 8,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var infoWindow = new google.maps.InfoWindow();
            var map = new google.maps.Map(document.getElementById("dvMap"), mapOptions);
            for (i = 0; i < markers.length; i++) {
                var data = markers[i]
                var myLatlng = new google.maps.LatLng(data.lat, data.lng);
                var marker = new google.maps.Marker({
                    position: myLatlng,
                    map: map,
                    title: data.title
                });
                (function (marker, data) {
                    google.maps.event.addListener(marker, "click", function (e) {
                        infoWindow.open(map, marker);
                    });
                })(marker, data);
            }
        }
    </script>

    <div id="dvMap" style="width: 500px; height: 500px">
    </div>
      </form>

这是后面的代码,`

string xx = string.Empty;
void GetData(string strRsult)
{
    XmlDataDocument xmlDataDoc = new XmlDataDocument();
    xmlDataDoc.LoadXml(strRsult);
    foreach (XmlNode n in xmlDataDoc.DocumentElement.GetElementsByTagName("Property"))
    {
        if (n.HasChildNodes)
        {
            foreach (XmlNode childNode in n)
            {
                switch (childNode.Name)
                {
                    case "GEOData":
                        {

                            xx = childNode.Attributes["City"].Value + ", " + childNode.Attributes["Longitude"].Value + ", " + childNode.Attributes["Latitude"].Value;
                            rptMarkers.DataSource = xx.ToCharArray();
                            rptMarkers.DataBind();

                            break;
                        }

                    default: break;
                }
            }
        }

    }
}`

目前您正在将数据源设置为一个字符数组,Repeater 正在尝试获取每个 charCity 属性,当然char 没有 City 属性。要首先解决此问题,您需要创建一个包含您感兴趣的属性的 class。

public class Markers
{
    public string City {get; set;}
    public string Latitude {get; set;}
    public string Longitude {get; set;}
}

然后从您的 xml 创建一个 Markers 的集合,并将数据源设置为该集合。

List<Markers> markers = new List<Markers>();
foreach (XmlNode n in xmlDataDoc.DocumentElement.GetElementsByTagName("Property"))
{
    foreach (XmlNode childNode in n)
    {
        if(childNode.Name == "GEOData")
        {
            markers.Add(new Markers
                {
                    City = childNode.Attributes["City"].Value,
                    Longitude= childNode.Attributes["Longitude"].Value,
                    Latitude= childNode.Attributes["Latitude"].Value
                });
        }
    }
}

rptMarkers.DataSource = markers;
rptMarkers.DataBind();