Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.06.2011, 04:26
Аспирант
Отправить личное сообщение для Jeer Посмотреть профиль Найти все сообщения от Jeer
 
Регистрация: 23.01.2011
Сообщений: 30

Доступ к Dictionary <string,struct>
Добрый день, вопрос для тех, кто разбирается в .Net
У меня определен статический класс Class1, в котором содержится статический словарь Dictionary и описание структуры:

//c# code------------
public static class Class1
{
public static Dictionary<string, struct1> Class1_Pict =
new Dictionary<string, struct1>();

public struct struct1
{
public string pict;

//конструктор
public struct1 (string pict) {this.pict = pict;}
}
}
//--------------------

Затем мы этот словарь заполняем, не важно на какой странице
//c# code------------
Class1.Class1_Pict.Add ("test1", new Class1.struct1("../Theme/pict0.gif");
Class1.Class1_Pict.Add ("test2", new Class1.struct1("../Theme/pict1.gif");
//------------

Заполняется всё хорошо, теперь я пытаюсь с помощью jQuery, поменять src у какой-либо картинки (img1), используя значения из этого словаря. Вопрос как до него достучаться.

<head runat="server">
<title></title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.js">
</script>
</head>
<body>
<form id="form1" runat="server">
...
<img id="img1" src=""/>

<script type="text/javascript">
$("img1").attr("src", );
</script>
</form>
</body>
---------------
Если вместо вставить значение "../Theme/pict1.gif", то картинка отображается. Мне же нужно получить значение из моего Dictionary, в c# это делается так:
string s = Class1.Class1_Pict["test1"].pict;
Как это значение вытащить через jQuery?

Последний раз редактировалось Jeer, 23.06.2011 в 04:46.
Ответить с цитированием
  #2 (permalink)  
Старый 23.06.2011, 14:04
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Ваш C#-вый код выполняется на сервере, а JS - на клиенте. Соответственно, к моменту выполнения JS скрипта .Net уже отработал и все эти поля Class1 были любезно собраны сборщиком мусора. Так что - никак.
Нужно передавать эти данные клиенту и работать с ними на его стороне.
Ответить с цитированием
  #3 (permalink)  
Старый 23.06.2011, 14:20
Аспирант
Отправить личное сообщение для Jeer Посмотреть профиль Найти все сообщения от Jeer
 
Регистрация: 23.01.2011
Сообщений: 30

Там есть мой косяк, руками писал, запнулся, конечно $("#img1"), сорри.

То есть получается, что из клиентского скрипта не достучаться до моего Dictionary?
Мне нужно менять десяток картинок по нажатию на кнопку, единственное, что пришло в голову, это определить Dictionary, в котором и хранить значения "src".
По нажатию на кнопку определяется "key" и по этому ключу из Dictionary получаем "src". Подменить же картинки, без перезагрузки страницы, легко позволяет jQuery.
Подскажите другой возможный вариант реализации?
Ответить с цитированием
  #4 (permalink)  
Старый 23.06.2011, 14:33
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Я не совсем понял Ваш вариант, но мой таков:
Отдавать в коде страницы еще и массив этих src, с которыми уже и работать из jQuery.
<script type="text/javascript">
// здесь какая-нибудь вставка кода, исполняющегося на сервере и генерирующая что-то вроде
// var arr = ["../Theme/pict0.gif", "../Theme/pict1.gif", "../Theme/pict2.gif"]
 $("#img1").attr("src", arr[0]);
 </script>
Ответить с цитированием
  #5 (permalink)  
Старый 23.06.2011, 14:41
Аспирант
Отправить личное сообщение для Jeer Посмотреть профиль Найти все сообщения от Jeer
 
Регистрация: 23.01.2011
Сообщений: 30

Дадада =) это именно оно.
Только можно поподробнее что за код, исполняющийся на сервере? У меня определен словарь, и нужно получить значение по ключу.
Вопрос не сложный. Как это делается? =)
Ответить с цитированием
  #6 (permalink)  
Старый 23.06.2011, 14:55
Аспирант
Отправить личное сообщение для Jeer Посмотреть профиль Найти все сообщения от Jeer
 
Регистрация: 23.01.2011
Сообщений: 30

Оу, ребят, мне на готдотнете подсказали, кому интересно

если вопрос только в доступе к справочнику и подмене src, то могу предложить такой вариант
- разместить на странице HiddenField
1.
<asp:HiddenField ID="HFImgUrlString" runat="server /">

- в PageLoad
view source

print
?
01.
StringBuilder temp = new StringBuilder();
02.
Class1.Class1_Pict.Add ("test1", new Class1.struct1("../Theme/pict0.gif");
03.
Class1.Class1_Pict.Add ("test2", new Class1.struct1("../Theme/pict1.gif");
04.
...
05.
foreach(string key in Class1.Class1_Pict.Keys)
06.
{
07.
temp.Append(key + "#" + Class1.Class1_Pict[key].pict + ";");
08.
}
09.
HFImgUrlString.Value = temp.ToString();

- в js на странице остается распарсить строку
01.
var img_dict = new Array();
02.
$(function(){
03.
var temp_mas = $('#' + '<%= HFImgUrlString.ClientID %>').val().split(';');
04.
$(temp_mas).each(function(index, element){
05.
if(element != ''){
06.
var tmp = element.split('#');
07.
img_dict[tmp[0]] = tmp[1];
08.
}
09.
});
10.
});

теперь можно так
1.
$("#img1").attr("src", img_dict['test1'] );
#такие дела
------
номера строк только не в счет
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить доступ к iframe? vladbir Общие вопросы Javascript 9 21.11.2012 20:05
Как в jQuery получить доступ к фрейму или самому верхнему окну? Neokortex jQuery 7 20.12.2010 10:38
Доступ к локальному котексту Aleko Общие вопросы Javascript 2 28.04.2010 12:46
Доступ к элементам Git Элементы интерфейса 3 20.03.2010 19:26
Доступ к input или css файла bobroff jQuery 7 22.12.2009 22:21