我不确定是否以及如何做到这一点但是在我的控制器中我有:
[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,但需要获取其余的详细信息,如电子邮件,姓名,姓氏等。我刚刚把电子邮件放下来.. 我是否必须将具有这些详细信息的另一个模型传递给视图?
答案 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;
}
将此应用于通用模型而不是视图模型的优点是,这可以应用于其他视图模型,而无需为同一数据的数据访问创建多个方法。