C# 使用字符串格式绑定MVC中的可空datetime

C# 使用字符串格式绑定MVC中的可空datetime,c#,asp.net-mvc,C#,Asp.net Mvc,从过去两天开始,我无法解决这个问题 @Html.TextBoxFor(model => model.myObject.dateAssign, String.Format("{0:MM/dd/yy}")) 这里,dateAssign是可为空的datetime。它可能有价值,也可能没有价值 我不断得到以下错误 Index (zero based) must be greater than or equal to zero and less than the size of the argum

从过去两天开始,我无法解决这个问题

@Html.TextBoxFor(model => model.myObject.dateAssign, String.Format("{0:MM/dd/yy}"))
这里,dateAssign是可为空的datetime。它可能有价值,也可能没有价值

我不断得到以下错误

Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
请给我一些提示或指导

String.Format()
需要第二个参数-在您的情况下,是您的日期

看看日期格式

然后你会写这样的东西

@Html.TextBox(model => String.Format("{0:MM/dd/yy}", model.myObject.dateAssign))  
或者,如果您想使用
@Html.TextBoxFor
,您可以这样注释您的属性:

// in your model:
[DisplayFormat(DataFormatString = "{0:MM/dd/yy}", ApplyFormatInEditMode= true]
DateTime? dateAssign { get; set; }  

// and in your view:
@Html.TextBoxFor(model => model.myObject.dateAssign)
String.Format()
需要第二个参数-在您的例子中是日期

看看日期格式

然后你会写这样的东西

@Html.TextBox(model => String.Format("{0:MM/dd/yy}", model.myObject.dateAssign))  
或者,如果您想使用
@Html.TextBoxFor
,您可以这样注释您的属性:

// in your model:
[DisplayFormat(DataFormatString = "{0:MM/dd/yy}", ApplyFormatInEditMode= true]
DateTime? dateAssign { get; set; }  

// and in your view:
@Html.TextBoxFor(model => model.myObject.dateAssign)

“”不是日期吗??将引发错误,因为DateTime是valuetype,字符串是引用类型“”不是日期??将引发错误,因为DateTime为valuetype,string为引用类型此处date为Nullable我尝试过,但这会将错误更改为“模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式。”
string.Format
也适用于
null
。那就空了。关于第二个问题:用
@Html.TextBox
替换
@Html.TextBox
。这应该行得通。只有在EditorFor/DisplayFor中使用[DisplayFormat]属性,而TextBoxFor等原始HTML API不使用[DisplayFormat],当我们在DataAnotation中设置ApplyFormatInEditMode=true时,DisplayFormat也可以工作。此处日期为Nullable我尝试过,但这会将错误更改为“模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。”
String.Format
也可以与
null
一起使用。那么它只是空的。对于第二个问题:将
@Html.TextBoxFor
替换为
@Html.TextBox
。这样应该可以[DisplayFormat]属性仅在EditorFor/DisplayFor中使用,而不是由TextBoxFor等原始HTML API使用,并且当我们在dataanotations中设置ApplyFormatInEditMode=true时,DisplayFormat也起作用