环境:Visual Studio的2013和MVC 5不显眼的客户端验证规则必须是唯一的
我升级我的网站从2010年VS & MVC 3 VS 2013 & MVC 5.这只是正常的VS 2010 & MVC 3 ,在升级项目中(VS 2013 & MVC 5),出现以下消息时出错。
不引人注意的客户端验证规则中的验证类型名称必须是唯一的。下面的验证类型被视为一次以上:日期
类
public partial class FileTransferFilterCriteria
{
public string Fice { get; set; }
public string SourceEmail { get; set; }
public string TargetEmail { get; set; }
public DateTime? FromDate { get; set; }
public DateTime? ToDate { get; set; }
public string Status { get; set; }
public string Category { get; set; }
}
元数据
[MetadataType(typeof(FileTransferFilterCriteria.FileTransferFilterCriteriaMetaData))]
public partial class FileTransferFilterCriteria
{
public class FileTransferFilterCriteriaMetaData
{
[DataType(DataType.DateTime)]
[Date(ErrorMessage = ValidationMessageConstants.InvalidDate)]
[UIHint(UiHintEditorTemplateConstants.DateCalendar)]
[UIHint(UiHintDisplayTemplateConstants.Date)]
public DateTime? FromDate { get; set; }
[DataType(DataType.DateTime)]
[Date(ErrorMessage = ValidationMessageConstants.InvalidDate)]
[UIHint(UiHintEditorTemplateConstants.DateCalendar)]
[UIHint(UiHintDisplayTemplateConstants.Date)]
public DateTime? ToDate { get; set; }
}
}
的Html
<tr>
<th>Upload From Date</th>
<td>
@Html.EditorFor(x => x.Criteria.FromDate, UiHintEditorTemplateConstants.DateCalendar)
@Html.ValidationMessageFor(x => x.Criteria.FromDate)
</td>
</tr>
<tr>
<th>Upload To Date</th>
<td>
@Html.EditorFor(x => x.Criteria.ToDate, UiHintEditorTemplateConstants.DateCalendar)
@Html.ValidationMessageFor(x => x.Criteria.ToDate)
</td>
</tr>
编辑模板
@using System.Globalization
@model DateTime?
@Html.TextBox("",
(Model != null &&
Model.HasValue &&
!Model.Value.ToString(CultureInfo.InvariantCulture).Contains("1900") &&
!Model.Value.ToString(CultureInfo.InvariantCulture).Contains("0001")
?
Model.Value.ToString("MM/dd/yyyy")
:
string.Empty),
new { @class = "datePicker", maxlength = "12", size = "12" })
这里有什么问题?
从VS 2010 & MVC 3项目产生的HTML:
<tr>
<th>Upload From Date</th>
<td>
<input class="datePicker" data-val="true" data-val-date="Invalid date specified. Date should be like MM/DD/YYYY." id="Criteria_FromDate" maxlength="12" name="Criteria.FromDate" size="12" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Criteria.FromDate" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<th>Upload To Date</th>
<td>
<input class="datePicker" data-val="true" data-val-date="Invalid date specified. Date should be like MM/DD/YYYY." id="Criteria_ToDate" maxlength="12" name="Criteria.ToDate" size="12" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Criteria.ToDate" data-valmsg-replace="true"></span>
</td>
</tr>
生成的HTML - VS 2013和MVC 5,当我拿出日期属性:
<tr>
<th>Upload From Date</th>
<td>
<input class="datePicker" data-val="true" data-val-date="The field Upload From Date must be a date." id="Criteria_FromDate" maxlength="12" name="Criteria.FromDate" size="12" type="text" value="" />
<br/><span class="field-validation-valid" data-valmsg-for="Criteria.FromDate" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<th>Upload To Date</th>
<td>
<input class="datePicker" data-val="true" data-val-date="The field Upload To Date must be a date." id="Criteria_ToDate" maxlength="12" name="Criteria.ToDate" size="12" type="text" value="" />
<br/><span class="field-validation-valid" data-valmsg-for="Criteria.ToDate" data-valmsg-replace="true"></span>
</td>
</tr>
尝试移除'[数据类型(DataType.DateTime)]'。 –
是的,这就是我发现的错误...谢谢 –
仍然有一个问题,如下所述。 –