2012-11-02 19 views
1

我创建了一个具有动态行和列的矩阵类型表单。单元格包含需要由C#(MVC4,ASP.NET 4)处理的输入字段。形式看起来像这样(简化):在C#中处理多维POST数据(ASP.NET 4.0)

<form action="~/Administration/PriceMatrix" method="post"> 
    <input type="text" name="Prices[1][0][1]" value="15.00" /> 
    <input type="text" name="Prices[1][0][2]" value="12.50" /> 
    <input type="text" name="Prices[1][1][1]" value="10.00" /> 
    <input type="text" name="Prices[1][1][2]" value="7.50" /> 
</form> 

匹配控制器仍然是空的:

[HttpPost] 
public ActionResult PriceMatrix(object form) 
{ 

} 

当我使用Request.Form我当然可以访问所有的值,但他们没有(DE )序列化成一个数组。所以我不能这样做:Request.Form["Prices"][0]或类似的东西。相反,我只能使用他们的全名访问它们:Request.Form["Prices[1][0][1]"](= 15.00)。当然,我可以通过数组循环,并为每个值分割Key,但我想以其他方式执行此操作。我试图用另一个类型或自定义对象替换object form包含列表等,但迄今没有运气。

有什么建议吗?

+0

你有没有尝试过像''double [,,] prices'“这样的参数?只是想知道...不知道如果这是可行的 –

+0

为什么你没有序列化成JSON形式? – AMember

回答

2

您需要获取值作为自定义类型。我建议您将表单序列化为JSON,然后在服务器端以任何您喜欢的方式访问序列化表单。