不要使用视图包,而是使用视图模型传递数据。不要传入您的域模型,使用视图模型。
让我们从您的操作方法开始。让我们称之为YourActionMethod
。它创建您的视图模型的实例并用您的用户填充用户列表。如何在服务层中填充用户完全取决于您。
public ActionResult YourActionMethod()
{
YourViewModel viewModel = new YourViewModel
{
Users = userService.FindAll()
};
return View(viewModel);
}
您的视图模型可能如下所示(部分):
public class YourViewModel
{
public int UserId { get; set; }
public IEnumerable<User> Users { get; set; }
}
创建一个域模型来代表您的用户。您的用户域模型可能如下所示:
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
}
您的视图(页面)将收到您的视图模型:
@model YourProject.ViewModels.Users.YourViewModel
您下拉的 HTML 标记将如下所示:
@Html.DropDownListFor(
x => x.UserId,
new SelectList(Model.Users, "Id", "UserName", Model.UserId),
"-- Select --"
)
@Html.ValidationMessageFor(x => x.UserId)