2010-09-15 4 views
1

Я не уверен, что я делаю неправильно здесь, даже не уверен, что я на правильном пути. У меня есть модель представления, и я создаю выпадающий список из нее. Вот мой взгляд модель:Проверка SelectList в MVC 2

public class ApplicationViewModel 
    { 
     public Application Application { get; private set; } 
     public SelectList AccountTypes { get; private set; } 

     public ApplicationViewModel(Application application, IEnumerable<AccountType> accountTypes) 
     { 
     Application = application; 
     AccountTypes = new SelectList(accountTypes, "AccountTypeID", "AccountTypeName", application.AccountTypeID); 
     } 
    } 

Вот моя страница (получить) действие:

public ActionResult Create() 
     { 
     var viewModel = new ApplicationViewModel(new Application(), db.AccountTypes); 

     return View(viewModel); 
     } 

И мой взгляд код:

<%: Html.DropDownListFor(???, Model.AccountTypes, "-- Select --") %> 
       <%: Html.ValidationMessageFor(???) %> 

В приведенном выше коде, я не точно уверен, что должно произойти ??? Начальное значение - «Выбрать -». Если пользователь нажимает кнопку отправки, а выпадающее значение остается «- Select -», тогда оно должно отображать сообщение.

Я также использую EF4. Пожалуйста, кто-нибудь может посоветовать, что делать. Образцы кода были бы оценены.

Спасибо.

ответ

2

Если View сильно типизированных, а именно:

Inherits="System.Web.Mvc.ViewUserControl<Model.NameSpace.ApplicationViewModel>" 

Тогда ??? в вашем представлении код должен быть выражением лямбда, относящимся к элементам в вашей модели ViewModel. (Я предполагаю, что ваш Применение объект ViewModel имеет свойство, которое будет присвоено значение, основанное на раскрывающемся списке?)

я предполагал объект вашего приложения имеет свойство ВидСчета, например:

??? должно быть что-то вроде:

<%= Html.DropDownListFor(x => x.Application.AccountType, Model.AccountTypes) %> 

значение из выпадающего списка будет заселить свойство ВидСчета на вашей модели приложений и будет заселенной с AccountTypes из вашей ViewModel.

Надеюсь, это поможет.

- EDIT -

На модели приложения, используйте пространство имен:

using System.ComponentModel.DataAnnotations; 

Над вашей собственности AccountTypes, добавьте

[Required(ErrorMessage="Account Type Required")] 

Я думаю, что это должно работать.

+0

Спасибо за ответ. Да, это строго типизированный вид. Он правильно заполняет ваш путь, но я не получаю Html.ValidationMessageДля запуска, если ничего не было выбрано. Я пробовал Html.ValidationMessageFor (m => m.Application.AccountType), но он не работает. –

+0

Спасибо, что работает сейчас :) –

+0

Не уверен, могу ли я спросить об этом здесь, когда я нажимаю на submit, тогда у моего приложения нет AccountType или AccountTypeID. Вот мое действие Create: public ActionResult Create (приложение). Как это установить? –

Смежные вопросы