asp.net を使用して、Web フォームの HiddenField に文字列の配列を格納する必要があります。どうすればそれを達成できるか教えてもらえますか?ありがとう
39980 次
4 に答える
16
おそらくいくつかの方法が機能するでしょう。
1)JSONでString[]をシリアル化します
これは、クラスを使用する.NETでかなり簡単でJavaScriptSerializer
あり、区切り文字の問題を回避します。何かのようなもの:
String[] myValues = new String[] { "Red", "Blue", "Green" };
string json = new JavaScriptSerializer().Serialize(myValues);
2)文字列に表示されない区切り文字を考え出す
|||
各文字列を、文字列に表示されないような文字で区切ります。この文字列を作成するために使用できString.Join()
ます。何かのようなもの:
String[] myValues = new String[] { "Red", "Blue", "Green" };
string str = String.Join("|||", myValues);
そして、次のように再構築します。
myValues = str.Split(new string[] { "|||" }, StringSplitOptions.RemoveEmptyEntries);
これは、一連の事前定義された選択肢など、入力を信頼できる場合に最適なオプションです。それ以外の場合は、非常に安全にしたい場合は、入力文字列をチェックして、この区切り文字が含まれていないことを確認することをお勧めします。HttpUtility.HtmlEncode()
最初に各文字列をエスケープするために使用できる可能性があります。
于 2012-12-13T23:48:36.543 に答える
9
配列を格納するには
string[] myarray = new string[] {"1","2"};
myHiddenField.Value = String.Join(",", myarray);
配列を取得するには
string[] myarray = myHiddenField.Value.Split(',');
于 2012-12-13T23:48:48.797 に答える
7
実際に単一のフィールドに格納しますか?
各値を独自の非表示フィールドに入れ、すべての非表示フィールドにプロパティの名前を付けると、モデル バインディングはこれを配列として扱います。
foreach (var option in Model.LookOptions)
{
@Html.Hidden(Html.NameFor(model => model.LookOptions).ToString(), option)
}
于 2015-11-25T16:03:28.420 に答える