我不确定我在这里做错了什么,甚至不确定我是否走在正确的轨道上。我有一个视图模型,我从中创建一个下拉列表。这是我的观点模型:
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。有人可以建议做什么。代码样本将不胜感激。
感谢。
答案 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")]
我认为这应该有用。