如何删除mvc4文本框中的默认日期?

时间:2016-09-21 09:39:31

标签: 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日历。

 $(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正在文本框中显示。其实我想显示占位符值。

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

3 个答案:

答案 0 :(得分:6)

要使用占位符显示空文本框,您需要使属性可以为空。如果还想要选择日期,那么您还可以使用[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]" })

并且你的datepicker插件应该在渲染DOM时初始化,而不是每次聚焦

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

答案 1 :(得分:0)

DateTime是结构和值。当你通过模型来查看" dateofAction"有默认值。这种挑战的两种方式:

  1. 将dateofAction设为可为空。
  2. 在创建模型时将dateofAction设置为DateTime.Now。

答案 2 :(得分:0)

两种解决此问题的方法。

  1. 通过添加“?”设置实体为Nullable实体的数据类型旁边 像private function enterPress(event:Event):void { trace("enter pressed"); }

  2. 如果您不想使该实体为Nullable,则可以在“ view.cshtml”视图中添加此代码

<j:TextInput text="A TextInput" enter="enterPress(event)"/>

在这种情况下为Model.Value.ToString(“ d”);替换为Model.dateofAction.ToString(“ d”);

在输入字段中使用“ variableName”作为值

在ToString(“ d”)中,“ d”是字符串格式化程序 了解有关字符串格式here

的更多信息