帮助使用linq将新行插入数据库

时间:2010-12-03 00:06:29

标签: c# asp.net linq linq-to-sql

以下是我的代码片段:

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。

4 个答案:

答案 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设计器中设置关系)

最后一件事:什么时候它会抛出异常?

相关问题