这是我第一次遇到这样的问题 - 当然这并不意味着什么,但我需要向集体请教,因为虽然我的搜索显示可以解决,但我自己无法解决。
问题在于,如果用户将文本框留空,C#会自动在postback和数据库中输入零。我只想让文本框保持空白。
我有一个类,在其中声明了属性:
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
我想,如果我无法更改类型,也许我可以更改输出。所以我想,也许我可以通过将此放置在文本框的文本属性中来伪造它:
'<%# Eval("PageNumber") == 0 ? null:Eval("PageNumber") %>'
这会抛出CS0019: Operator '==' cannot be applied to operands of type 'object' and 'int'
异常。
为什么它如此顽固???