Какие типы C # могут быть доступны из ASP .net? - PullRequest
3 голосов
/ 27 января 2012

Допустим, у меня есть класс с именем ApplicationSettingsManager, и у меня есть строка, на которую нужно ссылаться из Javascript на моей странице ASP .net, я сделал следующее:

<%=ApplicationSettingsManager.IdNumber %>

И все работает отлично. Но что, если мне нужно сослаться на Dictionary<String,String>? Или любой другой, немного более сложный тип? Является ли это возможным? Нужно ли как-то использовать сериализацию?

Ответы [ 3 ]

6 голосов
/ 27 января 2012

Нужно ли как-то использовать сериализацию?

Да, рекомендуется использовать сериализацию JSON при передаче сложных типов в javascript.Например, вы можете использовать класс JavaScriptSerializer :

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

Пример с Dictionary<string, string>:

<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>

в окончательной разметке.

0 голосов
/ 27 января 2012

Если вы хотите использовать пространства имен, которые не включены по умолчанию, вы должны импортировать их в начало вашего файла.Например, для словаря, который определен в пространстве имен System.Collections.Generic, вы должны написать:

<%@ Import Namespace="System.Collections.Generic" %> 
0 голосов
/ 27 января 2012

Я сделал это вчера:

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