2016-09-21 81 views
2

我有一个文本框在mvc4应用程序如下。如何删除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压光机。

$(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在文本框中显示的是面临的问题。其实我想显示占位符的价值。

我可以知道为什么我无法获得占位符值吗?

+1

让你属性可为空 - 'public DateTime? dateofAction {get;组; }'(和**不**设置'value'属性!) –

+0

谢谢斯蒂芬。像'charm'这样的作品 –

+0

并且删除'$(document).on('focus','.calender',function(){'并用'$('#dateofAction')替换它。datapicker({...} );'并移除'new {@id =“dateofAction”}(它已经有了'id') –

回答

5

为了显示带有占位符的空文本框,您需要使您的属性可以为空。如果还想要选择日期,则还可以使用[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渲染初始化,并非每次都集中注意力

$('#dateofAction').datepicker({ 
    dateFormat: "dd/mm/yy", 
    .... 
}) 
+0

是的,这是我需要的。非常感谢 –

+0

谢谢你............ –

0

DateTime是struct和value。当你传递模型来查看“dateofAction”具有默认值。这种挑战的两种方式:

  1. 使dateofAction可为空。
  2. 将dateofAction设置为DateTime.Now创建模型时。
相关问题