是否可以用管道分隔形式编码的值而不是逗号
本文关键字:编码 管道 分隔 是否 | 更新日期: 2023-09-27 18:00:40
目前,我有一组使用相同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
建议我有3个文本字段,而不是两个。所以一个简单的Replace(',','|')
是没有帮助的。
实际上,POST分别发送两个输入的值。您看到的是串联版本,因为您是如何从Request.Form(即NameValueCollection)访问它的。
为了能够区分不同的POSTed值,可以使用GetValues()
string[] values = Request.Form.GetValues("SameName");
如果它是一个字符串,您可以使用string.replacement方法,并告诉它要替换的字符以及要用什么来替换它。
string sr = "Value1,Value2";
sr.Replace(",","|");
编辑
我认为您可以将request.form的返回分配给一个数组,然后在数组中循环以单独获得值,并对它们执行您想要的操作。这样可以解决在结果中使用逗号的问题。
这里有一个很好的例子,说明您正在尝试做什么:
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编码功能