1

首先我想说,我对 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'.

谢谢!

4

2 回答 2

3

尝试将属性设置为可空类型->

    [Column("MoneyIn")]
    public int? MoneyIn { get; set; }
    [Column("MoneyOut")]
    public int? MoneyOut { get; set; }
于 2013-06-08T21:16:26.330 回答
1

您的模型和数据库定义不匹配,您在数据库定义(Age、MoneyIn、MoneyOut 和 TimesWon)中有可为空的字段,但在模型中有不可为空的字段。

于 2013-06-08T21:17:33.020 回答