我设法注册一个applicationuser,现在我想提出一个HTTP GET请求,它在View中显示当前登录用户的账户详细信息。为什么我的嵌套CustomerViewModel为空?
但是,当我运行应用程序并转到“MyPages”视图时,出现异常,表明嵌套的CustomerViewModel为空。我完全不知道为什么,但出于某种原因。
这是HomeController.cs的ActionResult的
public ActionResult MyPages()
{
string userId = User.Identity.GetUserId();
var currentUser = _userRepository.GetById(userId);
var customer = _customerRepository.GetById(currentUser.Customer.Id);
var userViewModel = new UserViewModel();
userViewModel.Id = currentUser.Id;
userViewModel.UserName = currentUser.UserName;
//This is where the exception occurs. Apperantly CustomerViewModel is null
userViewModel.CustomerViewModel.Id = customer.Id;
userViewModel.CustomerViewModel.FirstName = customer.FirstName;
userViewModel.CustomerViewModel.LastName = customer.LastName;
userViewModel.CustomerViewModel.Email = customer.Email;
return View(userViewModel);
}
这是UserViewModel
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using Microsoft.AspNet.Identity.EntityFramework;
namespace GUI.Models
{
public class UserViewModel
{
public virtual string Id { get; set; }
public virtual string UserName { get; set; }
public virtual string PasswordHash { get; set; }
public virtual string SecurityStamp { get; set; }
public virtual ICollection<IdentityUserRole> Roles { get; set; }
public virtual ICollection<IdentityUserClaim> Claims { get; set; }
public virtual ICollection<IdentityUserLogin> Logins { get; set; }
public CustomerViewModel CustomerViewModel { get; set; }
}
}
这是CustomerViewModel:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using ClassLibrary.Entities;
namespace GUI.Models
{
public class CustomerViewModel
{
public Guid Id { get; set; }
[Required]
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Last Name")]
public string LastName { get; set; }
[Display(Name = "Email Adress")]
[Required(ErrorMessage = "Email address is required")]
[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string Email { get; set; }
public List<InvoiceViewModel> InvoiceViewModels { get; set; }
public List<AddressViewModel> AdressViewModels { get; set; }
public AddressViewModel AdressViewModel { get; set; }
public virtual ICollection<Invoice> Invoice { get; set; }
public virtual ICollection<Adress> Adress { get; set; }
}
}
似乎是什么问题这里?
CustomerViewModel是更换您的UserViewModel Model类null,你必须声明像 ** var userViewModel = new UserViewModel(); ** –