C# 如何删除mvc4文本框中的默认日期?
我在mvc4应用程序中有一个文本框,如下所示C# 如何删除mvc4文本框中的默认日期?,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我在mvc4应用程序中有一个文本框,如下所示 @Html.TextBoxFor(x=>x.dateofAction, ViewBag.filterdateTime as string, new { @id = "dateofAction", @placeholder = "Date Of Action", @class = "txtBox form-control calender validate[required]" }) 我正在为这个文本框使用jquery日历 $(docume
@Html.TextBoxFor(x=>x.dateofAction, ViewBag.filterdateTime as string, new { @id = "dateofAction", @placeholder = "Date Of Action", @class = "txtBox form-control calender validate[required]" })
我正在为这个文本框使用jquery日历
$(document).on('focus', '.calender', function(){
$(this).datepicker({
dateFormat: "dd/mm/yy",
changeMonth: true,
changeYear: true,
showOn: 'button',
buttonImage: '/images/icondate.png',
buttonImageOnly: true
})
});
这是我的模型
[DisplayName("dateofAction")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
public DateTime dateofAction { get; set; }
当第一次页面加载默认日期1/1/0001 12:00:00 am
显示在文本框中时,我面临问题。实际上我想显示占位符值
我可以知道为什么无法获取占位符值吗?日期时间是struct和value。当您将模型传递给视图时,“dateofAction”具有默认值。应对这一挑战的两个途径:
为了显示带有占位符的空文本框,需要将属性设置为空。如果还希望选择日期,则还可以使用
[Required]
属性装饰属性
还请注意,[DisplayFormat]
是不必要的,并且由TextBoxFor()
方法忽略。您还应该使用[Display]
属性,而不是[DisplayName]
您的属性应该是
[Display(Name= "Date of Action")]
[Required(ErrorMessage = "Please select a date")]
public DateTime? dateofAction { get; set; }
那么在视图中,您的代码应该是
@Html.TextBoxFor(x=>x.dateofAction, new { @placeholder = "Date Of Action", @class = "txtBox form-control calender validate[required]" })
并且应该在呈现DOM时初始化datepicker插件,而不是每次它被聚焦时
$('#dateofAction').datepicker({
dateFormat: "dd/mm/yy",
....
})
解决这个问题有两种方法
公共日期时间?dateofAction{get;set;}
了解有关字符串格式设置的详细信息使属性可为null-
公共日期时间?dateofAction{get;set;}
(不要设置值
属性!)谢谢stephen。其工作原理类似于charmAnd删除$(文档)。在('focus','.calender',function(){
上,将其替换为$('dateofAction')。datapicker({…});
并删除新的{@id=“dateofAction”}
(它已经有了id
)@StephenMuecke如果用户不习惯使用可空日期时间怎么办?如果我们使用value属性,那么它会影响到其他任何东西吗?谢谢stephen。我删除并进行了更改。非常感谢。你能把答案放在这里吗?这是我需要的。非常感谢
var variableName =
Model.Value.ToString("d") == default(DateTime).ToString("d") ? "" :
Model.Value.ToString("d");