7

現在、同じname属性で動的に作成される一連のテキストボックスがあります。

<input type="text" name="SameName" value="Value1" />
<input type="text" name="SameName" value="Value2" />

サーバー側では、送信されたフォーム(POST)を受信して​​アクセスRequest.Form["SameName"]しており、値はValue1,Value2です。

私の質問は、区切り文字をコンマからパイプ(または他の文字)に変更することは可能ですか?

さまざまなフィールドを区切る必要があるため、コンマをパイプに置き換えることはできません。

<input type="text" name="SameName" value="Val,ue1" />
<input type="text" name="SameName" value="Value2" />

だろう:

Val、ue1、Value2

2つではなく3つのテキストフィールドがあることを提案します。したがって、単純なReplace(',','|')ものは役に立ちません。

4

3 に答える 3

14

実際には、POSTは2つの入力の値を個別に送信します。Request.Form(NameValueCollection)からアクセスしているため、連結バージョンが表示されています。

異なるPOST値を区別できるようにするには、次を使用できます。GetValues()

string[] values = Request.Form.GetValues("SameName");
于 2013-02-21T21:44:07.233 に答える
1

文字列の場合は、string.replaceメソッドを使用して、置換する文字と置換する文字を指定できます。

string sr = "Value1,Value2";
sr.Replace(",","|");

編集

request.formの戻り値を配列に割り当ててから、配列をループして値を個別に取得し、それらを使用して必要な処理を実行できると思います。これにより、結果にコンマが含まれるという問題を回避できます。

于 2013-02-21T21:28:06.543 に答える
-1

これがあなたがやろうとしていることの優れた例です:

public function MyAction(FormCollection form) as String
    dim sb = new Text.StringBuilder
    for each value as string in form.Getvalues("SameName")
        sb.Append(Server.UrlEncode(value) & ",")

    next
    'Remove trailing comma if you want
    If Right(sb.ToString, 1) = "," Then
        retVal.Remove(sb.Length - 1, 1)
    End If

'Do other fun stuff here if you want

    return sb.ToString

End Function

参照:ASP.NET MVC:同じ名前のフォームフィールドの取得-c#の複数の同じ名前フィールド

http://msdn.microsoft.com/en-us/library/zttxte6w.aspx-URLエンコード機能

于 2013-02-21T21:57:02.640 に答える