【问题标题】:ASP.Net MVC Datepicker ignore DataFormatStringASP.Net MVC Datepicker 忽略 DataFormatString
【发布时间】:2014-04-23 03:24:31
【问题描述】:

我在 viewmodel 中以正确格式显示日期时遇到问题,并且验证也不起作用,请参阅图片

正如我看到许多帖子提到他们设法解决了它无需需要在客户端设置日期格式。所以我希望在客户端设置日期格式,这意味着通过 jQueryUI datepicker 或任何用于在客户端格式化的方法。但无论我尝试什么,它似乎都没有采用 ViewModel 的格式。

我知道这个问题已经在这里发布了很长时间,但对我来说似乎没有任何效果。这是我尝试过的列表,但没有一个对我有用
Unable to set datetime format in MVC 4 using data annotations
-- 不知道为什么它可以工作,因为我在数据注释中尝试了日期和日期时间

Validate DateFormat In Mvc
--> 试过了还是不行

Jquery dd/MM/yyyy date format validation --> 包含 jquery-ui-i18n.js 对我来说似乎有点矫枉过正,我不想在客户端设置。

所以任何人都可以建议我错过了什么? 或者我可以说 DataFormatString 如果不在客户端做额外的工作就完全没用了吗?

这是我的视图模型

public class DateModel
{
    [Display(Name = "StartDate")]
    [DataType(DataType.Date)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yy}")]
    public Nullable<DateTime> StartDate { get; set; }

    [Display(Name = "EndDate")]
    [DataType(DataType.DateTime)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yy}")]
    public Nullable<DateTime> EndDate { get; set; }


}

我的观点

<div class='editor-field'>
    @Html.EditorFor(model => model.StartDate)
    @Html.ValidationMessageFor(model => model.StartDate)
</div>
<div class='editor-label'>
    @Html.LabelFor(model => model.EndDate)
</div>
<div class='editor-field'>
    @Html.EditorFor(model => model.EndDate)
    @Html.ValidationMessageFor(model => model.EndDate)
</div>

【问题讨论】:

    标签: jquery asp.net-mvc-4 datepicker


    【解决方案1】:

    您需要使用 jquery globalize 插件来调整不显眼的验证模式。

    使用 nuget Install-Package jquery-globalize 安装或下载插件 here

    在您的包中包含 Globalize.js 和 ./cultures/globalize-culture[your-culture].js 脚本。

    在您的视图或脚本文件中使用下面的 javascript 代码:

    Globalize.culture("[your-culture]");
    $.validator.methods.date = function(value, element) {
        return this.optional(element) || Globalize.parseDate(value);
    };
    

    【讨论】:

    • 嗨,感谢您的回答,但我想找出为什么那里的每个人都提到 DataFormatString 可用于设置日期格式但不适用于我。而且正如我上面提到的,我不想通过在我的解决方案中添加更多库来解决这个问题。
    • 如果您使用插件进行不显眼的验证是我认为您可以解决问题的唯一方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    相关资源
    最近更新 更多