验证MVC 2中的SelectList

时间:2010-09-15 08:12:52

标签: asp.net-mvc

我不确定我在这里做错了什么,甚至不确定我是否走在正确的轨道上。我有一个视图模型,我从中创建一个下拉列表。这是我的观点模型:

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(???) %>

在上面的代码中,我不确定必须进入什么?初始值为“ - 选择 - ”。如果用户点击提交按钮并且下拉列表的值仍然是“ - 选择 - ”,那么它必须显示一条消息。

我也在使用EF4。有人可以建议做什么。代码样本将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:2)

如果您的视图是强类型的,即:

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

那么???在您的视图中,代码应该是一个lambda表达式,引用ViewModel中的项目。 (我假设您的ViewModel的 应用程序 对象有一个属性,该属性将根据下拉列表分配一个值?)

我假设您的应用程序对象具有AccountType属性,例如:

???应该是这样的:

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

下拉列表中的值将填充Application模型上的AccountType属性,并将使用ViewModel中的AccountTypes填充。

希望这有帮助。

- 编辑 -

在您的应用程序模型上,使用命名空间:

using System.ComponentModel.DataAnnotations;

在您的AccountTypes属性上方,添加

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

我认为这应该有用。