如何在我的MVC 3应用程序中配置字段以允许空字符串

本文关键字:字段 配置 字符串 许空 应用程序 我的 MVC | 更新日期: 2023-09-27 17:58:25

我首先设计了数据库,然后使用EF设计器创建了一个模型,用于我的MVC应用程序。我的数据库中的大多数nvarchar列都默认为空字符串,并且不允许为null。

我如何在MVC 3应用程序中配置字段以允许空字符串?

<div class="editor-label">
  @Html.LabelFor(model => model.Phone2)
</div>
<div class="editor-field">
  @Html.EditorFor(model => model.Phone2)
  @Html.ValidationMessageFor(model => model.Phone2)
</div>

属性"Phone2"可以为空,但EF/MVC的默认行为似乎是使字段成为必需字段。

我创建了一个分部类来扩展EF生成的类,我还有一个MetadataType类来向模型添加额外的DataAnnotation属性。

[MetadataType(typeof(MyClassMetadata))]
public partial class MyClass
{
    // Adding more properties and methods here, mostly to support use of enums in EF.
}
public class MyClassMetadata
{
    // Empty strings are ok here!
    public string Phone2 { get; set; }
    [AllowHtml]
    [UIHint("Html")]
    public string Text { get; set; }
}

如何使字段"非必需"?我知道我可以跳过视图中的验证(使用普通控件),但将所需的行为添加到模型中似乎更"正确"。

如何在我的MVC 3应用程序中配置字段以允许空字符串

默认情况下允许空字符串,因此不需要添加任何属性。此外:

我可以跳过我的视图(使用普通控件),但它似乎更"正确"地添加而不是我的模型的期望行为。

这实际上是错误的假设。它用于最简单的应用程序,但通常被认为是一种糟糕的做法。ViewModel负责定义用户输入的验证。您可以对编辑和插入进行不同的验证——如何通过单个类上的数据注释来实现这一点?