注意到一个问题,当我将模型传递给视图时,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 []?
答案 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))