8

私が試してみました:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}", ConvertEmptyStringToNull = true)]
[Required(AllowEmptyStrings = true)]
public DateTime? BirthDateFrom { get; set; }

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
[Required]
public DateTime? BirthDateFrom { get; set; }

ConvertEmptyStringToNullおよびとの有無によるすべての組み合わせAllowEmptyStrings

ビューでは、私は持っています:

@Html.EditorFor(m => m.BirthDateFrom)

有効な日付でフォームを送信できますが、そのフィールドに空の文字列があると、フォームが赤くなり、フォームを送信できません。必要なnull許容のDateTimeでnullまたは空の文字列値を使用してHTMLフォームの送信を許可するにはどうすればよいですか?

4

3 に答える 3

10

[Required]注釈を完全に削除するだけで要件を満たすことができるように思われます。

于 2012-01-23T21:46:09.170 に答える
6

タイプがnull許容であるという事実は、値が必須ではないことを意味します。null値はとにかく情報を提供しないため、null以外の値またはnull値を強制する意味はありません。

あなたが抱えている問題は、「null」の複数の意味であるように思われます。たとえば、「none」と「any」と「unknown」などです。残念ながら、.NETのnullの概念には、さまざまなタイプのnullは含まれていません。これを伝える唯一の方法は、次のいずれかを使用することです。-

a)「センチナル」値。たとえば、DateTime.MinValue特別な何かを伝達DateTime.MinValueします。これは、ドメインモデルで有効な値になることはありません。

b)外部フラグを使用して、欠落しているDateTime値の意味を示します。たとえばbool isAnybool isUnknownなど、または適切な列挙型

于 2011-03-13T14:25:48.763 に答える
0

EFを扱っている場合は、この方法でEFをオプションにすることができます。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<SomeObject>().Property(m => m.somefield).IsOptional();            
    base.OnModelCreating(modelBuilder);
}
于 2015-08-05T10:49:17.370 に答える