我正在努力让我的ViewModel工作以查看详细信息。我有它创建一个新的记录,但只是无法弄清楚如何只是查看已注册的数据。
我有两个型号
用户(包含UserName,Password,email等常规内容)然后 -
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 Register方法中我有
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表中。
我的问题是再次检索数据以显示在“用户/索引”页面上。这应该显示每个注册用户的Users和UserDetails的详细信息。我已经尝试了许多不同的东西来使它工作,但不断收到错误。我已经浏览了asp.net mvc网站上的书籍和示例应用程序,但找不到任何与此类似的关于1:1关系的示例。我认为在使注册部分工作之后,这将是一个简单的部分,但我看不出如何做到这一点。
在我的用户控制器中,我需要传入一个viewModel吗?或者我只是在Index方法中设置viewModel然后传递给视图?我尝试在这里设置视图模型没有成功,认为它类似于帐户控制器中的设置,但无论我尝试什么,我都会收到错误。
编辑 - 我尝试添加一个名为UserDetaisData的新ViewModel,它只包含 -
namespace TRS.ViewModels
{
public class UserDetailsData
{
public IEnumerable<User> User { get; set; }
public IEnumerable<UserDetails> UserDetails { get; set; }
}
}
但我不知道这是否正确。
然后在User控制器的Index方法中我有 -
public ViewResult Index()
{
var viewModel = new UserDetailsData();
我认为我需要实例化一个可以发送回视图的新viewModel。
然后我可以选择执行viewModel.User =和viewModel.UserDetails =。这就是我应该做的事情吗?我可以从这两个模型中检索数据,然后将所有数据发送回新viewModel中的视图吗?
任何人都可以提出建议或指出一个类似案例的例子吗?
由于
答案 0 :(得分:0)
您可以创建新的视图模型以显示要显示的所有数据,然后将其传递给视图(组合来自Users和UserDetails实体的相关字段)。或者,您可以使用用户ID的参数传递HTML部分以显示UserDetails。