如何将文本框绑定到datetime字段,但仅显示其日期部分(在ASP.MVC中)?

Landeeyo

我有一个绑定到DateTime模型字段的文本框视图。

风景:

@Html.TextBoxFor(model => model.StartDate, new { @class = "datepicker", id = "startDate" })

该模型:

[Required(ErrorMessageResourceType = typeof(Resources.ValidationMessages), ErrorMessageResourceName = "GeneralRequired")]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
[DataType(DataType.Date)]
[Display(Name = "StartDate", ResourceType = typeof(Resources.Something))]
public DateTime? StartDate { get; set; }

View使用jQuery datepicker处理日期输入。jQuery仅生成日期,但据我所知,C#中没有唯一的日期类型。

我也使用自定义的DateTime模型绑定程序,但发布代码(tl; dr;))相当大。

当用户在文本框中输入例如15-01-2015并将其发布到方法时,模型绑定程序会将其正确转换(转换为15-01-2015 12:00)。问题是,由于表单上有两个日期时间字段而触发了验证时,如果用户仅输入其中一个,则操作方法将返回带有验证消息的视图。已经输入的字段仍应明显填写。问题在于,当控制器的操作方法返回视图时,它将日期时间(而不只是日期)放置到文本框中。

我们有什么方法可以仅将日期而不是日期和时间传递给视图中的绑定字段?还是保持字段绑定但只显示value.Date在文本框中?

编辑:

我试图应用Hugo Delsing的解决方案,但面临下一个问题。基本上,我们将在模型的DateTime字段中使用EditorTemplate。DateTime.cshtml如下所示:

@model System.DateTime?
@if (Model == null)
{
    @Html.TextBox(
   string.Empty,
   "",
   new { @class = "datepicker", @type = "text" })
}
else
{
    @Html.TextBox(
   string.Empty,
   Model.ToString("dd-MM-yyyy"),
   new { @class = "datepicker", @type = "text" })
}

据我所知,问题出在生产线上

Model.ToString(“ dd-MM-yyyy”)

因为抛出的错误是

Shared \ EditorTemplates \ DateTime.cshtml(13):错误CS1501:方法'ToString'的重载没有1个参数

据我了解,就像其他东西一样,总是被评估,对吗?有什么解决方案可以在不将if语句移至主视图并构建类似内容的情况下实现我想要的吗?

@if(model.StartDate.HasValue)
{
   @Html.EditorFor(model => model.StartDate, "TemplateFirst")
}
else
{
   @Html.EditorFor(model => model.StartDate, "TemplateSecond")
}
雨果·德尔辛(Hugo Delsing)

我能正常工作的唯一方法是创建一个新的EditorTemplate

在中创建一个~/Views/Shared/EditorTemplates名为的视图,DateTime.cshtml并将以下内容放入其中。

@model System.DateTime?
@{
    var val = "";
    if (Model != null)
    {
        val = ((DateTime)Model).ToString("dd-MM-yyyy");
    }
}
@Html.TextBox(
   string.Empty, 
   val,
   new { @class="datepicker", @type = "text"})

现在,如果您调用默认的编辑器模板,它将可以正常工作并始终显示datepickerfor日期。

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

@type = "text"正如斯蒂芬·穆克(Stephen Muecke)指出的那样,并不是真正需要的。这是默认值。您可以添加/更改它以date触发HTML5日期选择器。请记住,它可能会在“ MM-dd-yyyy”中显示HTML5日期选择器,然后就无法验证该值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将文本框绑定到datetime字段,但仅显示其日期部分(在ASP.MVC中)?

来自分类Dev

如何将日期时间连接到C#asp.net中的文本框中以仅显示日期

来自分类Dev

如何将文本框绑定到WPF中的类的字段?

来自分类Dev

如何将MVC中的文本框布局显示为文本框而无需在侧面下拉?

来自分类Dev

如何将文本框中的字体大小绑定到数据源?

来自分类Dev

如何将列表绑定到ItemsControl中的文本框

来自分类Dev

如何将ProgressBar值绑定到ResourceDictionary中的文本框?

来自分类Dev

如何将多个动态生成的文本框值显示到数组中

来自分类Dev

如何将 SQL 数据库中的数据显示到文本框

来自分类Dev

如何将每个查询行显示到富文本框中?

来自分类Dev

如何将文本框绑定到不在数据上下文类中的类

来自分类Dev

将下拉列表中的结果绑定到ASP.NET Web表单中的文本框

来自分类Dev

如何将文本框的值传递到asp.net(vb)中的另一个页面

来自分类Dev

如何将对象属性绑定到 angular2 中的文本框

来自分类Dev

将文本框值绑定到WPF中的模型

来自分类Dev

如何将文本框中的文本复制到 datagridview1 的 1 列?

来自分类Dev

如何以角度将两个文本框绑定到 1 个变量中

来自分类Dev

如何将文本框中的数据和日期/时间插入Access数据库?

来自分类Dev

如何将数据表绑定到ASP.net MVC中的下拉列表?

来自分类Dev

我如何将Ienumerable类牢固绑定到MVC asp.net中的视图?

来自分类Dev

如何将数据绑定到ASP.NET MVC Razor中的布局模板

来自分类Dev

如何将json数据绑定到Asp.MVC5中的dropdownlist?

来自分类Dev

如何将模型绑定到 ASP MVC Core 中的会话

来自分类Dev

如何在asp.net MVC中获取登录的用户ID并在隐藏的文本框中显示它

来自分类Dev

如何将值从文本框传递到AngularJs中的函数?

来自分类Dev

VB6:如何将光标强制到文本框中,但释放按钮

来自分类Dev

如何将四个文本框值复制到HTML中的textarea?

来自分类Dev

如何将标签添加到Asp.net文本框中?

来自分类Dev

MVC使用datepicker维护文本框中的日期

Related 相关文章

  1. 1

    如何将文本框绑定到datetime字段,但仅显示其日期部分(在ASP.MVC中)?

  2. 2

    如何将日期时间连接到C#asp.net中的文本框中以仅显示日期

  3. 3

    如何将文本框绑定到WPF中的类的字段?

  4. 4

    如何将MVC中的文本框布局显示为文本框而无需在侧面下拉?

  5. 5

    如何将文本框中的字体大小绑定到数据源?

  6. 6

    如何将列表绑定到ItemsControl中的文本框

  7. 7

    如何将ProgressBar值绑定到ResourceDictionary中的文本框?

  8. 8

    如何将多个动态生成的文本框值显示到数组中

  9. 9

    如何将 SQL 数据库中的数据显示到文本框

  10. 10

    如何将每个查询行显示到富文本框中?

  11. 11

    如何将文本框绑定到不在数据上下文类中的类

  12. 12

    将下拉列表中的结果绑定到ASP.NET Web表单中的文本框

  13. 13

    如何将文本框的值传递到asp.net(vb)中的另一个页面

  14. 14

    如何将对象属性绑定到 angular2 中的文本框

  15. 15

    将文本框值绑定到WPF中的模型

  16. 16

    如何将文本框中的文本复制到 datagridview1 的 1 列?

  17. 17

    如何以角度将两个文本框绑定到 1 个变量中

  18. 18

    如何将文本框中的数据和日期/时间插入Access数据库?

  19. 19

    如何将数据表绑定到ASP.net MVC中的下拉列表?

  20. 20

    我如何将Ienumerable类牢固绑定到MVC asp.net中的视图?

  21. 21

    如何将数据绑定到ASP.NET MVC Razor中的布局模板

  22. 22

    如何将json数据绑定到Asp.MVC5中的dropdownlist?

  23. 23

    如何将模型绑定到 ASP MVC Core 中的会话

  24. 24

    如何在asp.net MVC中获取登录的用户ID并在隐藏的文本框中显示它

  25. 25

    如何将值从文本框传递到AngularJs中的函数?

  26. 26

    VB6:如何将光标强制到文本框中,但释放按钮

  27. 27

    如何将四个文本框值复制到HTML中的textarea?

  28. 28

    如何将标签添加到Asp.net文本框中?

  29. 29

    MVC使用datepicker维护文本框中的日期

热门标签

归档