【问题标题】:Sending a list from cs to ascx将列表从 cs 发送到 ascx
【发布时间】:2014-04-10 23:07:32
【问题描述】:

我对 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 文件。有什么想法吗?

【问题讨论】:

  • 你所说的 CS 是指文件背后的代码吗?
  • 如果您提供的代码在某个类的方法中,请在 ascx 代码隐藏的 page_load 事件中创建此类的实例,并在该实例上调用该方法以获取您的列表。

标签: c# asp.net webforms


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这篇文章很相似:

    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 要简单得多。这对你没有帮助,但仍然值得一说。

    【讨论】:

    • 谢谢,成功了!我确实已经看到使用 MVC 会更容易,但我被困在现有应用程序中进行修改。
    猜你喜欢
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多