我正在创建这个MVC模型,并试图了解做it.How的最佳方式,当我在下面的代码中有tables.For之间的关系示例时,我已经创建了一个表单视图模型,我正在调用函数来为用户获取图像表中的所有图像。我是否应该保留用户模型的图像属性,并在存储库中的LINQ查询中填充该属性,而不是从模型中调用方法?在LINQ中有没有办法自动填充联系人的所有图像?
public class UserFormViewModel {
UucsrRepository repository = new UucsrRepository();
public User User { get; set; }
public SelectList States { get; private set; }
public SelectList Genders { get; private set; }
public List<Images> UserImages { get; set; }
public UserFormViewModel(User User) {
User = User;
UserImages = repository.GetUserImages(User.Id).ToList();
States = new SelectList(repository.GetAllStates(), "ShortName", "Name");
Genders = new SelectList(repository.GetAllGenders(), "Gender", "Description");
}
}谢谢!
发布于 2010-10-26 16:14:04
例如,如果你只显示一些用户信息,而不是修改它,你不需要发送用户ID。我会使用smth,如下所示:
public class UserFormViewModel
{
public string UserName { get; set; }
public string Email { get; set; }
...
public SelectList States { get; private set; }
public SelectList Genders { get; private set; }
public List<Images> UserImages { get; set; }
}要填充(准备) ViewModel,使用单独的助手方法是相当方便的:
private UserFormViewModel PopulateUserFormViewModel(int userId)
{
var model = new UserFormViewModel();
var user = repository.GetUser(userId);
model.UserName = user.Name;
model.Email = user.Email;
...
model.UserImages = repository.GetUserImages(userId).ToList();
...
return model;
}在你的行动中,你调用:
public ActionResult ShowUser(int userId)
{
// maybe do something else
var userFormViewModel = PopulateUserFormViewModel(userId);
return View(userFormViewModel);
}这只是一种可能的方法,但一般原则非常明确:保持ViewModel简单(只需视图中所需的数据),最好创建一个可重用的方法将域对象转换为ViewModel。
https://stackoverflow.com/questions/4018279
复制相似问题