在FieldTemplates/Text_Edit.ascx.cs更改字符串的行为,首先删除验证器,因为它们会阻止提交表单:
protected void Page_Load(object sender, EventArgs e) {
TextBox1.MaxLength = Column.MaxLength;
if (Column.MaxLength < 20)
TextBox1.Columns = Column.MaxLength;
TextBox1.ToolTip = Column.Description;
if (Column.IsString)
{
this.Controls.Remove(RequiredFieldValidator1);
this.Controls.Remove(RegularExpressionValidator1);
this.Controls.Remove(DynamicValidator1);
}
else
{
SetUpValidator(RequiredFieldValidator1);
SetUpValidator(RegularExpressionValidator1);
SetUpValidator(DynamicValidator1);
}
}
将空字符串转换为 NULL 的代码位于 ConvertEditedValue 方法中的某处,因此对于字符串请跳过它:
protected override void ExtractValues(IOrderedDictionary dictionary)
{
if (Column.IsString)
{
dictionary[Column.Name] = TextBox1.Text;
}
else
{
dictionary[Column.Name] = ConvertEditedValue(TextBox1.Text);
}
}
现在您可以使用空字符串更新表,问题当然是现在您可以为所有 varchar 字段设置空字符串,而不仅仅是具有默认值的字段。
我在 Linq to SQL 或 EF 数据模型中看不到任何可以找到我的 SQL-Server 默认值的地方。有一个属性 DefaultValue 但它始终为 NULL。