MVC3 DataType.Date Editor для вывода неправильного класса в HTML - PullRequest
0 голосов
/ 16 сентября 2011

У меня есть проект MVC3.У меня 2 модельных класса.Давайте назовем их FooYes и FooNo.

Я создал контроллеры для каждого.

Я создал CRUD-представления для обоих.

Затем я реализовал jQuery DatePicker согласно thisссылка .Я реализовал только часть выбора, а не проверку.

В моем файле FooYes edit.cshtml средство выбора даты работает нормально.В edit.cshtml для FooNo это не так.

Единственное отличие, которое я обнаружил, заключается в классах, которые получают выходные данные для моделей:

FooYes выглядит так в окончательном html:

<input class="date" 

FooNo выглядит следующим образом:

<input class="text-box single-line"

Вот модель для FooYes:

    [Display(Name = "Creation Date")]
    [DataType(DataType.Date)]
    public virtual DateTime CreationDate { get; set; }

Вот модель для FooNo:

    [Display(Name = "Expiration Date")]
    [DataType(DataType.Date)]
    public virtual DateTime ExpirationDate { get; set; }

Как вы можете видеть, объявление в модели одно и то же, так что этого не может быть.Я даже попытался скопировать и вставить свойство ExpirationDate из FooNo в FooYes и продублировал весь материал от FooNo до FooYes внутри FooYes, и тогда он работал.Так что это не код в модели

Вот код из .cshtml:

    <div class="editor-label">
        @Html.LabelFor(model => model.CreationDate)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.CreationDate)
        @Html.ValidationMessageFor(model => model.CreationDate)
    </div>

Единственное, что отличается между этим и другим, это имя поля.

Когда я смотрю на исходный html-файл в конечном результате, заголовки, включая ссылки, все в точности совпадают, за исключением того, что не работает, класс = установлен в текстовую вещь вместо даты.

Я полностью сбит с толку.У кого-нибудь есть идеи, что могло бы вызвать это?

Ответы [ 2 ]

0 голосов
/ 16 сентября 2011

Чтобы ответить на ваш комментарий, вы можете сделать шаблон Date.cshtml глобальным, поместив его в каталог Views/Shared/EditorTemplates

0 голосов
/ 16 сентября 2011

Если вы действительно просто следовали по этой ссылке , причина, по которой она не сработала, заключается в том, что селектор для настройки средства выбора даты включает только .date.Попробуйте изменить JavaScript на:

$('.date, .text-box.single-line').datepicker({dateFormat: "dd/mm/yy"});

и посмотрите, работает ли он.Если это произойдет, вы можете подумать о пересмотре текстового поля, сгенерированного для FooNo, так как .text-box.single-line выглядит как класс генерации, который может использоваться другими текстовыми полями, которые не предназначены для сборщиков данных.

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