我已经决定开始使用MVC 3,当我尝试重新调整我的一个Web应用程序到MVC3时遇到这个问题.
我有这样的项目设置:
public class Project { public int ProjectID { get; set; } [required(ErrorMessage="A name is required")] public string Name { get; set; } [DisplayName("Team")] [required(ErrorMessage="A team is required")] public int TeamId { get; set; } [DisplayName("Start Date")] [required(ErrorMessage="A Start Date is required")] [DisplayFormat(ApplyFormatInEditMode=true,DataFormatString="{0:d}")] public DateTime StartDate { get; set; } [DisplayName("End Date")] [required(ErrorMessage="An End Date is required")] [DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:d}")] public DateTime EndDate { get; set; } }
我的报名表格是以这种方式写的:
<table> <tr> <td> <div class="editor-label"> @Html.LabelFor(model => model.StartDate) </div> </td> <td> <div class="editor-label"> @Html.LabelFor(model => model.EndDate) </div> </td> </tr> <tr> <td> <div class="editor-field"> @Html.TextBoxFor(model => model.StartDate,new { @class = "datepicker",id="txtStartDate" }) @Html.ValidationMessageFor(model => model.StartDate) </div> </td> <td> <div class="editor-field"> @Html.TextBoxFor(model => model.EndDate,id = "txtEndDate" }) @Html.ValidationMessageFor(model => model.EndDate) </div> </td> </tr> </table>
我的问题是文本框现在显示01 / Jan / 0001 00:00:00.
那么第一:我怎么才能得到一个缩写的日期?
我发现一个MVC2 solution,建议在SharedFolder中创建一个EditorTemplates文件夹,并使用EditorFor,但似乎并没有使用MVC3.它似乎也阻止了添加类容易像TextBoxFor一样
其次,一旦修复,我有一个特殊的验证系统,我需要到位.我需要结束日期在开始日期之后.我正在考虑用javascript我发现了http://www.datejs.com,但是有没有办法直接在我的课上进行验证?
解决方法
对于您的编辑模板尝试这个
@model DateTime? @Html.TextBox("",(Model.HasValue ? Model.Value.ToShortDateString() : string.Empty),new { @class = "datePicker" })
资料来源:MVC 3 Editor Template with DateTime
jQuery DateTime比较
$('#txtBox').change(function() { var date = $(this).val(); var arrDate = date.split("/"); var today = new Date(); useDate = new Date(arrDate[2],arrDate[1] -1,arrDate[0]); if (useDate > today) { alert('Please Enter the correctDate'); $(this).val(''); } });