use*_*482 15 asp.net hidden-field
我需要使用asp.net在我的webform中的HiddenField中存储一个字符串数组.请问有谁可以告诉我如何实现这一目标?谢谢
Mik*_*sen 15
可能有一些方法可行.
1)在JSON中序列化String []
这在使用JavaScriptSerializer
该类的.NET中相当容易,并且避免了分隔符字符的问题.就像是:
String[] myValues = new String[] { "Red", "Blue", "Green" };
string json = new JavaScriptSerializer().Serialize(myValues);
Run Code Online (Sandbox Code Playgroud)
2)想出一个从未出现在字符串中的分隔符
用字符分隔每个字符串,例如|||
字符串中永远不会出现的字符.您可以使用它String.Join()
来构建此字符串.就像是:
String[] myValues = new String[] { "Red", "Blue", "Green" };
string str = String.Join("|||", myValues);
Run Code Online (Sandbox Code Playgroud)
然后重建它像:
myValues = str.Split(new string[] { "|||" }, StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)
如果您可以信任您的输入,这可能是最佳选择,例如一系列预定义的选择.否则,您可能想要检查输入字符串,以确保它们不包含此分隔符,如果您想要非常安全.您可能HttpUtility.HtmlEncode()
首先使用它来转义每个字符串.
存储数组
string[] myarray = new string[] {"1","2"};
myHiddenField.Value = String.Join(",", myarray);
Run Code Online (Sandbox Code Playgroud)
获得阵列
string[] myarray = myHiddenField.Value.Split(',');
Run Code Online (Sandbox Code Playgroud)
你真的想把它存放在一个字段中吗?
如果将每个值放入其自己的隐藏字段中,并将所有隐藏字段赋予属性名称,则模型绑定会将其视为数组.
foreach (var option in Model.LookOptions)
{
@Html.Hidden(Html.NameFor(model => model.LookOptions).ToString(), option)
}
Run Code Online (Sandbox Code Playgroud)