0

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

[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,但需要获取其他详细信息,例如电子邮件、姓名、姓氏等。我现在刚刚放下电子邮件。我必须将另一个具有这些详细信息的模型传递到视图中吗?

4

1 回答 1

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;
}

将其应用于通用模型而不是您的视图模型的优势在于,它可以应用于其他视图模型,而无需为相同数据的数据访问创建多种方法。

于 2012-10-18T11:05:24.380 回答