我在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
正在文本框中显示。其实我想显示占位符值。
我可以知道为什么我无法获得占位符价值吗?
答案 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"有默认值。这种挑战的两种方式:
答案 2 :(得分:0)
两种解决此问题的方法。
通过添加“?”设置实体为Nullable实体的数据类型旁边
像private function enterPress(event:Event):void
{
trace("enter pressed");
}
如果您不想使该实体为Nullable,则可以在“ view.cshtml”视图中添加此代码
<j:TextInput text="A TextInput" enter="enterPress(event)"/>
在这种情况下为Model.Value.ToString(“ d”);替换为Model.dateofAction.ToString(“ d”);
在输入字段中使用“ variableName”作为值
在ToString(“ d”)中,“ d”是字符串格式化程序 了解有关字符串格式here
的更多信息