是否可以用管道分隔形式编码的值而不是逗号

本文关键字:编码 管道 分隔 是否 | 更新日期: 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编码功能