【发布时间】:2015-04-10 18:05:35
【问题描述】:
我在这里检查了数百万个其他帖子是否存在相同的错误,但找不到任何有用的信息。
我有一个这样的模型:
public class User
{
public int UserId { get; set; }
public string UserName { get; set; }
public int? CommunityId { get; set; }
public string Email { get; set; }
public Int64? Phone { get; set; }
public AlertMode AlertMode { get; set; }
public string B64EncodedImage { get; set; }
}
当我从数据库中获取用户时,分配如下所示:
User user = new User()
{
UserId = Convert.ToInt32(reader["UserId"]),
UserName = Convert.ToString(reader["UserName"]),
CommunityId = reader["CommunityId"] == DBNull.Value
? (int?)null : Convert.ToInt32(reader["CommunityId"]),
Phone = reader["Phone"] == DBNull.Value
? (Int64?)null : Convert.ToInt64(reader["Phone"]),
AlertMode = (AlertMode)Int32.Parse(reader["AlertMode"].ToString()),
Email = Convert.ToString(reader["Email"]),
B64EncodedImage = Convert.ToString(reader["B64EncodedImage"])
};
当我调用这段代码时:
@((BusinessLogic.GetUserByUserId(WebSecurity.CurrentUserId)).CommunityId.HasValue
? "COMMUNITYID"
: "Not set!"
)
我收到此错误:
Nullable object must have a value.
在这一行:
@((BusinessLogic.GetUserByUserId(WebSecurity.CurrentUserId)).CommunityId.HasValue
有什么想法吗?
================================================ ======================== 编辑:
我更改了代码以将用户作为模型返回到视图:
public ActionResult Manage()
{
User user = BusinessLogic.GetUserByUserId(WebSecurity.CurrentUserId);
return View(user);
}
逐步执行,模型已填充,但 CommunityId 为空(应该没问题)
@(Model.CommunityId.HasValue
? "COMMUNITYID"
: "Not set!"
)
现在我明白了:
Cannot perform runtime binding on a null reference
【问题讨论】:
标签: c# razor model-view-controller