2009-02-16 3 views
4

В Silverlight 2, используя C# на ASP.NET, вы можете передать набор параметров инициализации, назначив объект InitParams объекта Silverlight строкой, представляющей собой пару разделенных запятыми пары ключ/значение.Silverlight InitParams, где значение имеет запятую

Я видел другие системы, которые имеют аналогичный механизм для передачи коллекций пар ключ/значение в виде одной строки.

Что такое решение для указания значения, имеющего в нем запятую?

Например, эта строка не проблема:

string s1 = "key1=value1,key2=value2"; 

но это делает:

string s2 = "key1=value1,key2=two,values"; 

т.е. «два, значения» необходимо иметь запятая спасся каким-то образом ...

ответ

4

К сожалению, после быстрого Googling я не думаю, что механизм синтаксического анализа для InitParams следует какой-либо схеме кодирования. На самом деле было бы лучше, если бы это был фрагмент URL-запроса Query String, который имеет довольно стандартную кодировку и правила и является коммандой.

Итак, я думаю, что ваш единственный вариант - использовать другой делиметр, такой как символ трубы |.

Например:

key1=value1,key2=two|values 

Если должно было быть запятой в значении по какой-либо причине, вы всегда можете сделать string.replace ...

1

У меня была такая же проблема, и используется URL-кодирование для моего InitParams. Я использую раздел silverlightInitParams в файле web.config для загрузки нескольких параметров одновременно и генерировать строку initParams так:

var initParams = new StringBuilder(); 
var initParamsFromConfig = (NameValueCollection)ConfigurationManager.GetSection("silverlightInitParams"); 
foreach (string key in initParamsFromConfig) 
{ 
    initParams.AppendFormat("{0}={1},", key, Server.UrlEncode(initParamsFromConfig[key])); 
} 

В Silverlight клиент в Application_Startup извлечь параметры и хранить их в словаре:

foreach (var initParam in e.InitParams) 
{ 
    InitParameters.Add(initParam.Key, HttpUtility.UrlDecode(initParam.Value)); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^