【问题标题】:@html.TextBoxFor model value is not setting/prefilled/appearing for the type date@html.TextBoxFor 模型值未设置/预填充/出现类型日期
【发布时间】:2021-07-30 02:04:42
【问题描述】:

我有一个@html.TextBoxFor,我指定的类型是日期。在渲染视图时,模型值(来自数据库)没有设置。

我的代码如下所示。

<tr>
  <td>@Html.Label("ReferenceId")</td>
  <td>@Html.TextBoxFor(m => m.ReferenceId, new { @class = "form-control" })</td>
  <td>@Html.ValidationMessageFor(m => m.ReferenceId, null, new { @style = "color:red" })</td>
</tr>
<tr>
  <td>@Html.Label("End Date")</td>
  <td>@Html.TextBoxFor(m => m.EndDate, "{0:MM/dd/YYYY}", new { @class = "form-control", type = "date"})</td>
  <td>@Html.ValidationMessageFor(m => m.EndDate, null, new { @style = "color:red" })</td>
</tr>

这是加载模型数据后视图的外观:

可以看出,参考 id 正在填充,但日期没有。我需要帮助将模型值设置为日期字段。

【问题讨论】:

  • 当您检查该字段时,“值”属性设置为什么?我想你会想要 yyyy-mm-dd...所以今天的值应该是“2021-05-07”...否则浏览器只是将 mm/dd/yyyy 作为默认值。

标签: html asp.net asp.net-mvc datepicker


【解决方案1】:
@Html.TextBoxFor(m => m.EndDate, "{0:yyyy-MM-dd}", new { @class = "form-control", type = "date"})

应该可以。对于这种情况,我强烈建议使用 HtmlHelper 创建一个自定义 Helper。

public static MvcHtmlString DateFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> date, string type = "date", string format = "{0:yyyy-MM-dd}")
        {
            var value = (DateTime?)ModelMetadata.FromLambdaExpression(date, html.ViewData).Model;

            var div = new TagBuilder("div");
            div.AddCssClass("input-group");

            var span = new TagBuilder("span");
            span.Attributes.Add("style", "color:black");
            span.AddCssClass("input-group-addon");
            span.InnerHtml = "<i class='fa fa-calendar'></i>";
            div.InnerHtml = span.ToString();
            if (format != "{0:yyyy-MM-dd}")
            {
                div.InnerHtml += html.TextBoxFor(date, format, new { @class = "form-control", @type = type, data_date_format = format }).ToHtmlString();
            }
            else {
                div.InnerHtml += html.TextBoxFor(date, format, new { @class = "form-control", @type = type }).ToHtmlString();
            }
            
            return new MvcHtmlString(div.ToString());
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 2017-09-01
    • 2016-06-25
    • 1970-01-01
    • 2013-11-08
    • 2010-10-30
    • 1970-01-01
    相关资源
    最近更新 更多