从cs发送列表到ascx

时间:2014-03-07 17:06:01

标签: c# asp.net webforms

我是C#的新手,我正在尝试重建几年前用PHP构建的东西。

我正在努力完成以下任务:

在CS文件中,我正在构建一个地址列表(基本上由名称,地址和坐标组成),我需要在ASCX文件中构建带有一些标记的谷歌地图。

我的代码看起来像这样:

var neighbors = new List<List<String>>();
var neighbor = new List<String>();

int x = 0;
String firstRowFirstColumnValue = "";

while (x < result.Result.Count) {
   GenericEntityData Resultrow = result.Result[x] as GenericEntityData;

    neighbor.Add(Resultrow .Properties[2].Value.ToString());
    neighbor.Add(Resultrow .Properties[3].Value.ToString());
    neighbor.Add(Resultrow .Properties[7].Value.ToString());

    neighbors.Add(neighbor);
    x++;
}

现在似乎列表以正确的方式填充,但我无法弄清楚如何将其传递给ascx文件。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这篇文章非常相似:

Pass C# ASP.NET array to Javascript array

我喜欢zerkms最好的回答。它的票数最多。他的回答中缺少的是你列表(这与提供的链接中的数组非常相似)应该可以通过类级别的公共属性访问。所以把这个放在你的班级声明之下:

    public List<List<String>> Neighbors {get; set;}

在你的while循环结束后:

    Neighbors = neighbors;

在ascx页面中,您可以将列表放入javascript中,如下所示:

    <% var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); %>
    var jsVariable = <%= serializer.Serialize(Neighbors) %>;

无关:您可能需要考虑让您的邻居(单数)列出自定义类,而不是字符串列表。

我可能会提到使用asp.NET MVC这样的事情要简单得多。这对你没有帮助,但仍然值得一说。

答案 1 :(得分:0)

您可以使用sessionapplication或将其设为static属性,具体取决于您的Senario,如果此列表对每个用户都是唯一的,您可以在{{{ 1}},或者如果列表对所有用户都是唯一的,您可以在session上设置列表或将其创建为application属性