2013-02-21 69 views
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" /> 

是:

瓦爾,UE1,值2

暗示我有3個文本字段而不是兩個。所以一個簡單的Replace(',','|')是沒有用的。

+1

@nordic這可能是我最終會做的,但我只是看到,如果有一種方法我可以操縱ASP.Net如何派生的逗號分隔字符串。 – marteljn 2013-02-21 21:46:19

+0

沒關係,我認爲你得到了最好的答案:) – nrodic 2013-02-21 21:50:00

+0

你想在最後得到一個刪除的字符串嗎?或者你想在不同的變量中使用不同的值嗎? – 2013-02-21 21:50:36

回答

14

實際上,POST會分別發送兩個輸入的值。由於您從Request.Form(它是一個NameValueCollection)訪問它,因此您會看到串聯版本。

爲了能夠在不同的POST方法值來區分,可以使用GetValues()

string[] values = Request.Form.GetValues("SameName"); 
+0

當它出現時,我正在將它作爲一個建議輸入。這是要走的路線。 +1 – 2013-02-21 21:46:13

+0

@voithos這看起來很有希望,讓我測試這個快... – marteljn 2013-02-21 21:48:30

+0

@voithos謝謝!這是很好的知道。 – marteljn 2013-02-21 21:54:10

1

如果它是一個字符串,你可以使用string.replace方法並告訴它你想要替換的字符以及你想要替換的字符。

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

編輯

我想你可以分配的request.form的一個數組返回,然後通過數組來獲得單獨的價值和你想和他們有什麼循環。這將解決結果中逗號的問題。

+0

如果我在其中一個文本框中有逗號,該怎麼辦?我將添加一個編輯來澄清這一點。 – marteljn 2013-02-21 21:29:22

+0

好點,你可以發佈你的代碼,你分配'Request.Form [「SameName」]'的返回值嗎? – 2013-02-21 21:42:26

-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: Retrieving form fields with the same name - c#中多個同名字段#

http://msdn.microsoft.com/en-us/library/zttxte6w.aspx - URL編碼功能