当从下拉列表中选择没有值(NULL)时,向表中的INSERT值发出问题(WebMatrix / Razor语法))

时间:2012-09-27 18:27:51

标签: razor webmatrix html-select

如果未从下拉列表中选择任何值,则UPDATE SQL命令将向我发出类型为Update Statement Conflicts with Foreign Key Constraint的错误。这是正常的,因为没有选择任何已知值。

如何处理?

我填写下拉列表的代码

var titlesData = db.Query("SELECT TitleId, Name FROM Titles ORDER BY Name");
titlesListItems = titlesData.Select(i => new SelectListItem {
Value = i.TitleId.ToString(),
Text = i.Name,
Selected = i.TitleId == providerData.TitleId ? true : false
});

我的代码显示列表:

@Html.DropDownList("titlesCombo","-- Please select --",titlesListItems)

我的SQL语句

@"INSERT INTO Providers
  (Ref, ProviderTypeId, CompanyName, CompanyTypeId, TitleId, FirstName, LastName)
  VALUES (@0,@1,@2,@3,@4,@5,@6)";
  db.Execute(updateCommand, refer, providerTypeId, companyName, companyTypeId, titleId, firstName, lastName)

If one of the "id" fields are null, the insert will fail. How do I exclude the INSERT of those fields when they have a null value ?

我想通过IF语句强制表中的'虚拟'ID值(例如'0'),如果找到该值,则将'Selected'设置为false但是它是不可能,因为每个连接表中的主键不能手动设置为“0”(或任何其他值)(自动递增)。

那么解决方案是什么?

测试每个(我有很多)下拉列表框以排除没有选择值的那些并构造变量SQL语句?看起来很棘手和复杂!

1 个答案:

答案 0 :(得分:1)

要么使数据库中的ID字段为空,要么将发布的返回ID字段标记为[必需],以便在未选择任何选项时触发验证。