将int []传递给视图的最佳方法是什么

时间:2013-05-29 13:41:58

标签: c# .net asp.net-mvc

注意到一个问题,当我将模型传递给视图时,int []类型的一个属性转换为

<input type="hidden" value="System.Int32[]" name="test">

我希望在value属性中看到数组的字符串化值。 我试着用List。结果导致:

<input type="hidden" value="System.Collections.Generic.List`1[System.Int32]" 
       name="test">

我有相当复杂的模型,它依赖于其他类,这就是为什么我不想将其更改为字符串格式。是不是可以使用int []?

4 个答案:

答案 0 :(得分:1)

假设您需要通过POST将值接收回另一个操作方法,您必须在视图中编写自己的代码,以创建这样的HTML(列表中每个项目的一个隐藏字段):

<input type="hidden" value="123" name="test[0]">
<input type="hidden" value="345" name="test[1]">

阅读本文以获取更多信息:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

答案 1 :(得分:1)

在视图中,您可能需要执行以下操作:

@Html.HiddenFor(x => x.Array, new { value = String.Join(",", Model.Array) })

答案 2 :(得分:0)

您获得的类型的.ToString()值对于更复杂的类型是类型名称。

您能否以不同的方式公开您的收藏品属性。即。

public int [] MyIntegers
{
   ...
}

public string MyIntegersStringified
{
    get {

       return string.Join(",", MyIntegers);
    }
}

答案 3 :(得分:0)

@Html.HiddenFor接受一个对象作为值。你看到的是object.ToString(),对于Int32数组,它是类型的名称:“System.Int32 []”。

如果您想在隐藏字段中简单地存储数组的csv版本,可以尝试以下操作:

@Html.Hidden("test", string.Join(",", values))