【问题标题】:What C# types can be accessed from ASP .net?可以从 ASP .net 访问哪些 C# 类型?
【发布时间】:2012-02-20 07:28:56
【问题描述】:

假设我有一个名为 ApplicationSettingsManager 的类,并且在我的 ASP .net 页面上有一个需要从 Javascript 引用的字符串,我已经完成了以下操作:

<%=ApplicationSettingsManager.IdNumber %>

而且效果很好。但是如果我需要引用Dictionary&lt;String,String&gt; 怎么办?还是其他稍微复杂一点的类型?可能吗?我需要以某种方式使用序列化吗?

【问题讨论】:

    标签: c# javascript asp.net types inline-code


    【解决方案1】:

    我昨天做了这个:

    <%@ Import Namespace="System.Linq" %>
    

    【讨论】:

    • 对不起,我的意思是字典中的字典。出于某种原因,它没有显示在我的原始帖子中,我将进行编辑。
    【解决方案2】:

    我需要以某种方式使用序列化吗?

    是的,在将复杂类型传递给 javascript 时,建议使用 JSON 序列化。例如,您可以使用 JavaScriptSerializer 类:

    <script type="text/javascript">
        var value = <%= new JavaScriptSerializer().Serialize(AnyComplexObjectYouLike) %>;
    </script>
    

    Dictionary&lt;string, string&gt; 的示例:

    <script type="text/javascript">
        var value = <%= new JavaScriptSerializer().Serialize(new Dictionary<string, string> { { "key1", "value1" }, { "key2", "value2" } }) %>;
        alert(value.key1);
    </script>
    

    将呈现为:

    <script type="text/javascript">
        var value = {"key1":"value1","key2":"value2"};
        alert(value.key1);
    </script>
    

    在最终标记中。

    【讨论】:

    • 非常感谢!那么我在“价值”中有什么?以及如何将其视为字符串字典?
    • "找不到类型或命名空间名称 'JavaScriptSerializer'" - 如何导入此命名空间?
    • @DanielMcNulty,这就是为什么我总是在我正在使用的类的 MSDN 文档的答案中发布链接 - 因为有关于在哪个名称空间和程序集中声明这个类的信息。在这种情况下,它是&lt;%@ Import Namespace=" System.Web.Script.Serialization" %&gt;
    【解决方案3】:

    如果您想使用默认不包含的命名空间,您必须在文件开头导入它们。例如,对于定义在 System.Collections.Generic 命名空间中的 Dictionary,您必须编写:

    <%@ Import Namespace="System.Collections.Generic" %> 
    

    【讨论】:

      猜你喜欢
      • 2012-11-06
      • 1970-01-01
      • 2012-10-03
      • 2019-11-01
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      相关资源
      最近更新 更多