首先我要说的是,我是MVC模式的新手,对不起,如果我问一个愚蠢的问题。
我的问题: 我在为用户构建个人资料页面时遇到问题。如果用户访问该页面,它将列出有关它们的信息,如电子邮件地址,电话号码,全名等。
注意:的 我正在使用SimpleMemberShipProvider用户操作的“基本”项目模板。
问题在于数据库查询,以获取有关用户的必要数据。
这是我的UserProfile表数据:
CREATE TABLE [dbo].[UserProfile] (
[UserId] INT IDENTITY (1, 1) NOT NULL,
[UserName] NVARCHAR (MAX) NULL,
[FirstName] NVARCHAR (MAX) NULL,
[LastName] NVARCHAR (MAX) NULL,
[Age] INT NULL,
[Sex] NVARCHAR (MAX) NULL,
[SecretQuestion] NVARCHAR (MAX) NULL,
[SecretQuestionAnswer] NVARCHAR (MAX) NULL,
[MoneyIn] INT NULL,
[MoneyOut] INT NULL,
[TimesWon] INT NULL,
[Email] NVARCHAR (MAX) DEFAULT ('') NOT NULL,
[PhoneNumber] NVARCHAR (MAX) NULL,
[Address] NVARCHAR (MAX) NULL,
CONSTRAINT [PK_dbo.UserProfile] PRIMARY KEY CLUSTERED ([UserId] ASC)
);
我的'用户'模式:
[Table("UserProfile")]
public class User
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
[Column("UserName")]
public string UserName { get; set; }
[Column("Email")]
[Required]
public string Email { get; set; }
[Column("FirstName")]
public string FirstName { get; set; }
[Column("LastName")]
public string LastName { get; set; }
[Column("PhoneNumber")]
public string PhoneNumber { get; set; }
[Column("Address")]
public string Address { get; set; }
[Column("Age")]
[Required]
public int Age { get; set; }
[Column("Sex")]
public string Sex { get; set; }
[Column("SecretQuestion")]
[Required]
public string SecretQuestion { get; set; }
[Column("SecretQuestionAnswer")]
[Required]
public string SecretQuestionAnswer { get; set; }
[Column("MoneyIn")]
public int MoneyIn { get; set; }
[Column("MoneyOut")]
public int MoneyOut { get; set; }
[Column("TimesWon")]
public int TimesWon { get; set; }
}
这是我的DbContext类:
public DbSet<User> Users { get; set; }
我的控制器具有“个人资料”操作:
[Authorize]
public ActionResult Profil()
{
var model = db.Users.ToList();
return View(model);
}
最后我的视图的一些相关部分显示数据:
@model IEnumerable<OneMillion.Models.User>
@foreach (var item in Model)
{
@item.FirstName
}
尝试以登录用户身份访问网页时收到的错误:
Server Error in '/' Application.
The 'MoneyIn' property on 'User' could not be set to a 'null' value. You must set this property to a non-null value of type 'Int32'.
谢谢!
答案 0 :(得分:3)
尝试将属性设置为可空类型 - &gt;
[Column("MoneyIn")]
public int? MoneyIn { get; set; }
[Column("MoneyOut")]
public int? MoneyOut { get; set; }
答案 1 :(得分:1)
您的模型和数据库定义不匹配,您在数据库定义(Age,MoneyIn,MoneyOut和TimesWon)中有可为空的字段,但模型中有不可为空的字段。