以下是我的代码片段:
else
{
SubCategory subCat = new SubCategory
{
SubCategoryName = name,
Active = false,
CategoryID=Convert.ToInt32(ddlCategory.SelectedValue)
};
db.SubCategories.InsertOnSubmit(subCat);
}
db.SubmitChanges();
以下行导致错误:
CategoryID=Convert.ToInt32(ddlCategory.SelectedValue)
我已经确认我的DDL中的SelectedValue是一个int,并且数据库期望一个int,所以我不明白为什么asp.net给我一个YSOD说“输入字符串的格式不正确。 “
如果我手动为分配ID分配一个数字,它就可以工作。
编辑:问题是因为我在后面的代码中填充了下拉列表,而我没有将它包装在(!IsPostBack)中。所以它正在摧毁列表,重新填充它并在每次回发时将索引设置为0。答案 0 :(得分:0)
ddlCategory
来自哪里? ddlCategory.SelectedValue
的价值是多少?什么时候运行?显然,此时它不是一个有效的整数表示字符串。
答案 1 :(得分:0)
也许试试
Int.Parse(ddlCategory.SelectedValue);
答案 2 :(得分:0)
所以试试这个
else
{
int cat = Convert.ToInt32(ddlCategory.SelectedValue);
SubCategory subCat = new SubCategory
{
SubCategoryName = name,
Active = false,
CategoryID = cat
};
db.SubCategories.InsertOnSubmit(subCat);
}
答案 3 :(得分:0)
是另一个表的categoryID外键吗?如果是的话然后尝试拉出Category对象然后将其分配给subCat.Category并查看它是否有效(必须在DBML设计器中设置关系)
最后一件事:什么时候它会抛出异常?