为什么asp.net mvc模型绑定器生成system.string []

时间:2011-08-14 16:05:57

标签: asp.net-mvc-3

我有一个表单,它将有效的对象字典发布到我的控制器操作中。所以我们得到IEnumerable<EditThemeAttributeModel>

        public class EditThemeAttributeModel
        {
            public string Name { get; set; }
            public object Value { get; set; }
        }

当我查看Request.Form集合时,我看到了我的期望:

    [1] "Attributes[0].Name"    string
    [2] "Attributes[0].Value"   string
    [3] "Attributes[1].Name"    string
    [4] "Attributes[1].Value"   string
    [5] "Attributes[2].Name"    string
    [6] "Attributes[2].Value"   string

然而,当我尝试获取其中一个EditThemeAttributeModel的值时,它并不像我期望的那样简单,它是一个字符串数组:

-   Value   {string[1]} object {string[]}
                [0] "#ffffff"   string

我可以通过直接使用Request.Forms集合来解决这个问题,但只是想了解这种行为。

1 个答案:

答案 0 :(得分:4)

默认情况下,来自http请求的所有帖子都是字符串。由于您引用的是对象而不是类型化对象,因此默认为字符串,因为来自浏览器的数据是字符串。如果您希望它不是字符串,我建议您键入对象,或者可以为EditThemeAttributeModel创建自己的模型绑定器。