这是我遇到过的第一个 - 当然不会太好,但从来就不需要像集体一样查询我的搜索表明它可以完成,我无法解决它。可空(int?)继续抛出不可为空的异常
问题是,如果用户离开文本框为空,C#会自动在回发和数据库中输入零。我只是想让文本框留空。
我有一个类有属性声明:
private int? _PageNumber = null;
public int? PageNumber
{
get { return _PageNumber; }
set { _PageNumber = value; }
}
的在我的代码文件中我有:
if (tbPageNumber.Text != "")
ia.PageNumber = Convert.ToInt32(tbPageNumber.Text);
else
ia.PageNumber = null;
,这是我得到的异常:
CS0037: Cannot convert null to 'int' because it is a non-nullable value type
所以我想如果我不能改变类型,也许我可以改变输出。所以我想也许我可以通过将该在texbox的text属性假货:
'<%# Eval("PageNumber") == 0 ? null:Eval("PageNumber") %>'
这将引发CS0019: Operator '==' cannot be applied to operands of type 'object' and 'int'
异常。
为什么这么该死的固执?
这听起来不像是一个异常 - 这听起来像一个编译时问题。你可以在一个简短但完整的控制台应用程序中重现这一点,从ASP.NET的任务中完成任务吗? – 2013-04-10 18:01:45
CS0037看起来更像编译器错误,而不是异常。有一个非常大的差异。 – 2013-04-10 18:01:54