Почему asp.net mvc связыватель моделей производит system.string [] - PullRequest
5 голосов
/ 14 августа 2011

У меня есть форма, которая публикует то, что фактически является объектным словарем, для моего действия контроллера.Таким образом, мы получаем 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 Ответ

4 голосов
/ 15 августа 2011

Все сообщения из http-запросов по умолчанию являются строками. Поскольку вы ссылаетесь на объект, а не на типизированный объект, по умолчанию используется строка, поскольку данные, поступающие из браузера, являются строкой. Если вы хотите, чтобы это не была строка, я предлагаю вам напечатать свой объект, или вы можете создать свой собственный механизм связывания для EditThemeAttributeModel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...