我正在努力让我的 ViewModel 工作以查看详细信息。我让它用于创建新记录,但无法弄清楚如何简单地查看已注册的数据。
我有两个模型
用户(包含用户名、密码、电子邮件等常规内容),然后 -
public virtual ICollection<Role> Roles { get; set; }
public virtual UserDetails UserDetails { get; set; }
与 UserDetails 存在 1:1 关系,其中仅包含一些附加项目,如 FirstName、LastName 和
[Required]
public virtual User User { get; set; }
然后我有一个名为 RegisterViewModel 的 ViewModel,其中包含来自 User 和 UserDetails 的必要注册详细信息。
在我的 AccountController 注册方法中,我有
MembershipCreateStatus createStatus = MembershipService.CreateUser(viewModel.UserName, viewModel.Password, viewModel.Email);
if (createStatus == MembershipCreateStatus.Success)
{
TRSContext context = new TRSContext();
//FormsService.SignIn(model.UserName, false /* createPersistentCookie */);
User newuser = context.Users
.Include(i => i.UserDetails)
.Where(i => i.UserName == viewModel.UserName)
.Single();
newuser.UserDetails = new UserDetails();
Role adminRole = context.Roles.Find("User");
newuser.Roles = new List<Role>();
newuser.Roles.Add(adminRole);
newuser.UserDetails.Firstname = viewModel.FirstName;
newuser.UserDetails.Lastname = viewModel.LastName;
newuser.UserDetails.Address1 = viewModel.Address1;
newuser.UserDetails.Address2 = viewModel.Address2;
newuser.UserDetails.City = viewModel.City;
newuser.UserDetails.Postcode = viewModel.Postcode;
newuser.UserDetails.Country = viewModel.Country;
context.SaveChanges();
这一切都很好,我可以注册一个新用户,并将数据存储在 User 和 UserDetails 表中。
我的问题是再次检索数据以显示在用户/索引页面上。这应该显示每个注册用户的用户和用户详细信息的详细信息。我尝试了许多不同的方法来使其正常工作,但不断出现错误。我浏览了 asp.net mvc 站点上的书籍和示例应用程序,但找不到任何具有 1:1 关系的示例。我认为在注册部分工作之后,这将是简单的部分,但我不知道如何做到这一点。
在我的 Index 用户控制器中,我需要传入 viewModel 吗?还是我只是在 Index 方法中设置 viewModel 然后传递给视图?我尝试在此处设置视图模型但没有成功,认为它与帐户控制器中的设置类似,但无论我尝试什么都会出错。
编辑 - 我尝试添加一个名为 UserDetaisData 的新 ViewModel,它只包含 -
namespace TRS.ViewModels
{
public class UserDetailsData
{
public IEnumerable<User> User { get; set; }
public IEnumerable<UserDetails> UserDetails { get; set; }
}
}
但我不知道这是否是正确的做法。
然后在用户控制器的 Index 方法中,我有 -
public ViewResult Index()
{
var viewModel = new UserDetailsData();
因为我认为我需要实例化一个可以发送回视图的新视图模型。
然后我可以选择 viewModel.User = 和 viewModel.UserDetails = 。这是我应该做的吗?我可以从这两个模型中检索数据,然后将所有数据发送回新视图模型中的视图吗?
任何人都可以给我建议或指出一个类似案例的例子吗?
谢谢