0

我目前有一个 MVC3 站点,我在其中显示具有特定格式的 DateTime 字段,即大写 (DD-MON-YYYY)。

我为此创建了以下 DateTime.ascx EditorTemplate,并且我添加了一个自定义 data-datepicker 属性,该属性被一些自定义 javascript 拾取以将 Jquery UI Datepicker 添加到该字段。<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>

<input id="<%= ViewData.ModelMetadata.PropertyName %>"
       name="<%= ViewData.ModelMetadata.PropertyName %>"
       type="text"
       value="<%= ViewData.TemplateInfo.FormattedModelValue.ToString().ToUpper() %>"
       data-datepicker="true" />

我遇到的问题是,当我使用 EditorTemplate 时,我丢失了输入框上的所有 RemoteValidation 属性。显然是因为我没有专门添加它们!

有人可以指出我可以在模型或模型元数据中找到所需信息的正确方向,以便我可以使用远程验证和 JQueryUI 日期选择器构建输入框吗?

这是我目前从 EditorTemplate 得到的:

<input  id="MyDate"
        name="MyDate"
        type="text"
        value="19-SEP-2011"
        data-datepicker="true" />

这就是我最终想要的:

<input  class="text-box single-line"
        data-val="true"
        data-val-remote="&amp;#39;Date (DD-MON-YYYY)&amp;#39; is invalid."
        data-val-remote-additionalfields="*.MyDate"
        data-val-remote-url"=/Validation/IsDateValid"
        data-val-required="A Date must be given"
        id="MyDate"
        name="MyDate"
        type="text"
        value="19-Sep-2011" 
        data-datepicker="true" />

有几点需要注意:

  • 如果需要,我愿意使用 HTMLHelper。我不限于 EditorTemplate
  • 我在控制器上有不同的 RemoteValidation 操作,用于不同的日期。所以我不能只是硬编码验证网址。我需要查找模型中字段上装饰的远程属性的值。
  • 同样,data-val-remote 值也需要基于模型字段上的 RemoteAttribute 加载。

有没有人有任何想法?

4

1 回答 1

1

您需要使用帮助程序来获取不显眼的验证脚本使用的 HTML5 data-* 属性:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%= Html.TextBox(
    "", 
    ViewData.TemplateInfo.FormattedModelValue.ToString().ToUpper(), 
    new { data_datepicker = "true" }
) %>
于 2011-11-29T11:11:37.070 回答