只需拥有一个ID,就可以在ViewModel中填充值?

时间:2012-10-18 11:00:44

标签: asp.net-mvc-3

我不确定是否以及如何做到这一点但是在我的控制器中我有:

[HttpGet]
public ActionResult Detail(int userId)
{
  UserDetailViewModel user = new UserDetailViewModel();
  user.UserId = userId;
  user.Email = Email;
  return View(user);
}

我的UserDetailViewModel:

  namespace Zinc.Web.Areas.Admin.ViewModels.User

  public class UserDetailViewModel
  {
    [LocalizedRequired]
    [DisplayName("UserId")]
    public int UserId { get; set; }

    [LocalizedRequired]
    [DisplayName("Email")]
    public string Email { get; set; }
  } 

我有用户的ID,但需要获取其余的详细信息,如电子邮件,姓名,姓氏等。我刚刚把电子邮件放下来.. 我是否必须将具有这些详细信息的另一个模型传递给视图?

1 个答案:

答案 0 :(得分:1)

您需要将所有这些属性添加到视图模型中(即UserDetailViewModel)。

然后创建一个方法,可以使用id作为参数获取值并将它们设置为属性:

[HttpGet]
public ActionResult Detail(int userId)
{
   UserDetailModel user = GetUser(userid);
   UserDetailViewModel model = new UserDetailViewModel;
   model.UserId = user.UserId;
   model.Email = user.Email;
   model.Name = user.Name;
   //etc...
   return View(model);
}

GetUser的示例:

public UserDetailModel GetUser(userId){
   //Do some data access here
   UserDetailModel user = new UserDetailModel;
   user.UserId = //Set from data accessed
   //etc..
   return user;
}

将此应用于通用模型而不是视图模型的优点是,这可以应用于其他视图模型,而无需为同一数据的数据访问创建多个方法。