asp.net - 在 MVC3 编辑器模板中获取验证属性

标签 asp.net asp.net-mvc-3 mvc-editor-templates

我正在编写一个编辑器模板,用于输入由三个字段组成的日期和时间。

  • 带有 jQ​​uery UI 日期选择器的文本框。
  • 用于输入时间的文本框。
  • 通过 javascript 使用完整的日期和时间字符串更新的隐藏输入。

  • 这个想法是为用户显示日期和时间的单独字段,而只有一个字段绑定(bind)到模型。每当显示的字段发生变化时,隐藏字段都会通过 JavaScript 更新。
    @model System.DateTime?
    <span class="datetime-editor">
    <input class="datepicker" value="@(Model.HasValue ? 
      Model.Value.Date.ToString() : string.Empty)" readonly="readonly"/>
    <input class="time" value="@(Model.HasValue ? 
      Model.Value.TimeOfDay.ToString() : string.Empty)"/>
    @Html.HiddenFor(d => d)</span>
    

    用于设置日期选择器并将值复制到隐藏字段的 JavaScript。
    $(".datepicker").datepicker();
    $(".datetime-editor").find("input").change(function () {
        var date = $(this).parent().find(".datepicker").val();
        var time = parseTime($(this).parent().find(".time").val());
        if (date != "" && time != null) {
            $(this).siblings(".datetime-result").val(date + " " + time);
        }
        else {
            $(this).siblings(".datetime-result").val("");
        }
    });
    

    我的问题是验证属性。它们都存在于隐藏的输入标签中:
    <input name="StartDateTime" id="StartDateTime" type="hidden" 
      data-val-required="Start date and time are required" data-val="true" value=""/>
    

    我想以某种方式获取生成的 data-val*属性并将它们添加到可见输入中。通过ViewData.ModelMetaData我可以找出是否需要该字段,但是我必须重新发明逻辑来创建 data-val-required属性。我想获取生成的属性。

    最佳答案

    如果您想要 HTML5 data-* 验证属性,您可以使用 HTML 帮助器来生成这些输入:

    @{
        var validationAttributes = Html.GetUnobtrusiveValidationAttributes("");
    }
    @Html.TextBox(
        "", 
        Model.HasValue ? Model.Value.Date.ToString() : string.Empty, 
        new RouteValueDictionary(validationAttributes) 
        { 
            { "class", "datepicker" }, 
            { "readonly", "readonly" } 
        }
    )
    
    @Html.TextBox(
        "", 
        Model.HasValue ? Model.Value.TimeOfDay.ToString() : string.Empty, 
        new RouteValueDictionary(validationAttributes) 
        { 
            { "class", "time" } 
        }
    )
    

    关于asp.net - 在 MVC3 编辑器模板中获取验证属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8963813/

    相关文章:

    asp.net-mvc - ASP.NET MVC-仅图像+经过身份验证的用户

    .net - ASP.net MVC - 使用 EditorFor 两次相同的模型类型

    javascript - 如何在 asp.net 中注销后禁用浏览器的后退功能?

    javascript - 如何正确地将带有 JSON 数据的 jquery post 请求发送到 MVC 3,以便它将控制权交还给我的 Controller ?

    asp.net - 隐藏字段的替代 Asp.NET MVC

    c# - 根据其他值获取对象实例,而不使用服务位置

    jquery - 使用 jQuery 为同一类的所有按钮添加事件

    asp.net-mvc - Kendo UI 网格的 Kendo UI 编辑器模板问题

    c# - 提供者与 Oracle 客户端版本不兼容

    asp.net - 在网页上动态调整 Silverlight 控件的大小