Добавление полей профиля в регистрационную форму asp.net mvc3 - PullRequest
0 голосов
/ 20 августа 2011

Я новичок в mvc и хотел бы добавить дополнительное поле к моей странице регистрации, которое представляет собой просто выпадающий список, привязанный к таблице в моей модели (таблица названий организаций и идентификаторов).Однако в моем приложении по умолчанию я вижу, что AccountController использует модель RegisterModel для создания представления формы регистра.Это хорошо, я не хочу беспокоить это.Но я хочу добавить новое поле выбора на странице, привязанной к другой модели (моя модель с организациями).Как мне это сделать?

Я нашел другие посты, в которых предлагается создать модель оболочки как для моей модели, так и для RegisterModel, но это не работает.Моя модель оболочки выглядит следующим образом:

public class RegisterPeopleModel
    {
        public RegisterModel reg { get; set; }
        public fwfEntities fwf { get; set; }
    }

А теперь валидатор поля для пароля больше не работает.Код в представлении:

    <div class="editor-field">
        @Html.PasswordFor(m => m.reg.ConfirmPassword)
        @Html.ValidationMessageFor(m => m.reg.ConfirmPassword)
    </div>

Теперь отображает это:

<div class="editor-field">
                <input data-val="true" data-val-equalto="The password and confirmation password do not match." data-val-equalto-other="*.Password" id="reg_ConfirmPassword" name="reg.ConfirmPassword" type="password" />
                <span class="field-validation-valid" data-valmsg-for="reg.ConfirmPassword" data-valmsg-replace="true"></span>
            </div>

Обратите внимание, что идентификаторы диапазона и входа больше не совпадают.Форма больше не работает вообще.Это наводит меня на мысль, что я выбрал неправильный подход.Есть ли лучший способ получить список выбора на странице, привязанной к другой модели?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 20 августа 2011

Не видя RegisterModel, я предполагаю, что ConfirmPassword не имеет обязательного атрибута, например;

    [Required(ErrorMessage = "A password is required")]
    public string ConfirmPassword { get; set; }

о, я думаю, точка в идентификаторе заменена на подчеркивание, чтобы не вызывать проблем с Jquery.

0 голосов
/ 20 августа 2011

Есть ли лучший способ получить список выбора на странице, привязанной к другая модель?

Если модель не соответствует требованиям представления, вам следует изменить эту модель. В ASP.NET MVC рекомендуется разрабатывать модели представлений и передавать только модели представлений представлениям, а не моделям доменов (как, например, автоматически сгенерированные классы EF, как этот тип fwfEntities кажется). Поэтому спроектируйте модель представления, которая содержит только свойства, необходимые вашему представлению, и попросите действия контроллера выполнить запрос к базе данных, чтобы выбрать модель, затем сопоставить модель с моделью представления и, наконец, передать эту модель представления в представление.

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