2011-02-04 2 views
0

Кажется, что есть некоторая фундаментальная часть MVC, которую я не получаю. Вот так:Форма MVC (непреднамеренно) заполнена на http get

У меня есть View (Index.aspx) с тремя частичными видами (один со столом, два с одной формой).

Все четыре вида строго типизированы; родительский (index.aspx) имеет модель, которая содержит три свойства, которые передаются как модели для частичных представлений.

Одна из моделей для одного из частичных представлений (форма, позволяющая пользователю создать новую запись для таблицы) имеет DataAnnotations, чтобы включить проверку при отправке формы. Два поля формы являются целыми числами с RangeAttribute [Range(1000,9999)] и два DateTime с DisplayFormatAttribute как [DisplayFormat(DataFormatString = "{0:dd/MMM/yyyy}")]

Мои частичные виды использования помощника Html.EditorFor() для полей ввода, как так:

<%: Html.EditorFor<MyType, DateTime>(m => m.StartDate, new { @class = "specialclass" })%> 

В моем действии метод Я создаю модель представления для моего родителя, а также добавляю пустые модели представления для частичных (за исключением таблицы, заполненной записями), затем передаю это в мой запрос Return(). Я исключал, что таблица будет заполнена, но поля формы должны быть пустыми, но это не так.

Итак, почему поля формы заполнены 0 для двух целых полей и минимальное значение даты для двух полей даты, когда я получаю HTTP-представление для представления?

Что я делаю неправильно/что я не получаю?

Я думаю, мой вопрос: если у меня есть строго типизированный пользовательский элемент управления, который является формой, как это должно быть «обработано», когда я получаю http для родительского представления? Мне нужно передать ему модель, не так ли?

ответ

0

Установили ли вы значения или нет, система попытается их представить. Поскольку int не имеет значения NULL, он имеет тенденцию возвращать 0 при неинициализации, так что один из них ясен. DateTime, я предполагаю, потому что это будет null, по умолчанию используется DateTime.Min, поскольку вы указали, что вы ожидаете, что там будут данные как через поле, так и форматирование.

+0

Хорошо, это кажется разумным. Спасибо за ваш ответ! Итак, следующий вопрос: это siutation, где у вас есть строго типизированная форма, но ожидайте, что поля, которые не будут заполняться, когда представление будет восстановлено с помощью HTTP GET (изначально), должно быть чрезвычайно распространенным сценарием в приложении ASP MVC , Что лучше всего подходит для получения ожидаемого результата, т. Е. Показать все поля как пустые? Должен ли я изменить DisplayFormatAttribute? Как установить формат ожидаемой даты? Я только хочу разрешить пользователю вводить такие значения, как ddMMMyy, все другие форматы должны быть запрещены. Как ограничить это в моей модели? – Anton