【问题标题】:MVC Validation to accept DateTime in ddMMyyyy formatMVC 验证以接受 ddMMyyyy 格式的 DateTime
【发布时间】:2015-02-13 11:57:18
【问题描述】:

我只想在提交时接受 ddMMyyyy 格式的日期。但它给出了一个错误,如

FromDate 字段必须是日期。

但是,当我在 MMddyyyy 中输入日期时,它会自动接受 pkkttrfg。
我的模型是

public class CompareModel 
{
    [Required]
    [DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
    public DateTime FromDate { get; set; }

    [Required]
    [DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
    public DateTime TODate { get; set; }

}

我的视图部分是

<div class="form-group">
        @Html.LabelFor(model => model.FromDate, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.FromDate)
            @Html.ValidationMessageFor(model => model.FromDate)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.TODate, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.TODate)
            @Html.ValidationMessageFor(model => model.TODate)
        </div>
    </div>


    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Create" class="btn btn-default" />
        </div>
    </div>

【问题讨论】:

  • 您可以查看使用 jquery globalize 或根据 $.validator 添加方法到 this answer - 请注意,该解决方案适用于 jquery ui datepicker,但可以针对标准文本框进行调整(例如 split将值放入其组件中,构造一个新的 javascript Date() 对象并测试其是否有效)

标签: asp.net-mvc unobtrusive-validation


【解决方案1】:

问题在于它在后台使用 javascript 来验证这一点,您需要覆盖它。

jQuery(function ($) {
    $.validator.addMethod('date',
    function (value, element) {
        if (this.optional(element)) {
            return true;
        }

        var ok = true;
        try {
            $.datepicker.parseDate('dd/mm/yy', value);
        }
        catch (err) {
            ok = false;
        }
        return ok;
    });
});

取自this answer

【讨论】:

  • 我把这个放在哪里?谢谢。一旦我得到它的工作,我会投票。
  • 这需要 jquery-ui 才能工作,但这是最好的答案,因为它实际上解决了问题
【解决方案2】:

尝试添加

 <system.web>
    <globalization culture="en-GB"/>
</System.web>

它对我有同样的问题

【讨论】:

    【解决方案3】:

    我之前回答过的同样的问题 DatePicker format issue

    尝试在 web config 中设置与日期格式匹配的文化。

    <globalization uiCulture="en" culture="en-AU" />
    

    查看此链接 ASP.NET 对不同文化的日期时间支持

    http://maheshde.blogspot.com.au/2011/09/aspnet-date-time-support-for-different.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 2016-02-22
      • 2016-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多