C# Silverlight InitParams,其中值包含逗号
在Silverlight 2中,使用ASP.NET上的C#,可以通过为Silverlight对象的initiparms分配一个字符串来传递一组初始化参数,该字符串是一系列逗号分隔的键/值对 我见过其他系统也有类似的机制,可以将键/值对集合作为单个字符串传递 指定包含逗号的值的解决方案是什么 例如,此字符串没有问题:C# Silverlight InitParams,其中值包含逗号,c#,asp.net,silverlight-2.0,C#,Asp.net,Silverlight 2.0,在Silverlight 2中,使用ASP.NET上的C#,可以通过为Silverlight对象的initiparms分配一个字符串来传递一组初始化参数,该字符串是一系列逗号分隔的键/值对 我见过其他系统也有类似的机制,可以将键/值对集合作为单个字符串传递 指定包含逗号的值的解决方案是什么 例如,此字符串没有问题: string s1 = "key1=value1,key2=value2"; 但这一个是: string s2 = "key1=value1,key2=two,values";
string s1 = "key1=value1,key2=value2";
但这一个是:
string s2 = "key1=value1,key2=two,values";
i、 e.“两个值”需要以某种方式转义逗号…不幸的是,在快速搜索之后,我认为InitParams的解析机制不会遵循任何类型的编码方案。如果它是一个URL查询字符串片段,实际上会更好,它有一个相当标准的编码和规则,并且是逗号友好的 因此,我认为您唯一的选择是使用不同的delimeter,例如管道符号| 例如:
无论出于何种原因,如果值中必须是逗号,您可以始终执行String.Replace…我也遇到了同样的问题,并对InitParams使用了URL编码。我使用web.config文件中的silverlightInitParams部分一次加载多个参数并生成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客户端中,我提取参数并将其存储在字典中:
foreach (var initParam in e.InitParams)
{
InitParameters.Add(initParam.Key, HttpUtility.UrlDecode(initParam.Value));
}
foreach (var initParam in e.InitParams)
{
InitParameters.Add(initParam.Key, HttpUtility.UrlDecode(initParam.Value));
}