【问题标题】:MVC Razor - Default Value as Current date for textbox type dateMVC Razor - 默认值作为文本框类型日期的当前日期
【发布时间】:2014-10-17 04:54:25
【问题描述】:

我有一个Textbox,类型为date。我正在尝试将textbox 的默认值设置为当前日期。

@Html.TextBoxFor(x => x.Date, new { @id = "Date", @type = "date", 
                                    @value = DateTime.Now.ToShortDateString() })

以上行没有设置默认值。如何将默认值设置为当前日期?

【问题讨论】:

  • 只需在模型中设置Date 的值,然后再将其传递给视图。

标签: asp.net-mvc asp.net-mvc-4 date razor


【解决方案1】:

正如 Stephen Muecke 所说,您需要在模型上设置属性的值。

// in controller method that returns the view.
MyModel model = new MyModel();
model.Date = DateTime.Today;

return View(model);

你的剃刀是:

@Html.TextBoxFor(x => x.Date, "{0:yyyy-MM-dd}", new { @class = "form-control", @type = "date"})

注意idname属性在使用For方法时应该自动赋值给属性名,比如@Html.TextBoxFor(),所以不需要显式设置id属性。

【讨论】:

  • 我怀疑 OP 可能不希望属性 Date 成为 string。相反,将属性设置为DateTime.NowDateTime.Today 并使用@Html.TextBoxFor(m => m.Date, "{0:dd-MM-yyyy}", new { @class = "form-control"}) 如果您想呈现浏览器的日期选择器,则仅设置@type = "date"(在这种情况下,格式必须为yyyy-MM-dd
  • 谢谢@StephenMuecke,我确实想要Date 格式...我使用了{0:yyyy-MM-dd},然后它才起作用..因为HTML5 输入日期需要RFC3339 格式的日期.... !
  • @Anup,请注意 IE 在使用它时存在一些问题,因此值得在所有浏览器中进行测试。
  • @StephenMuecke,在将数据发送到视图时,我总是更喜欢将数据作为字符串。所有格式化都发生在控制器中,因此视图中存在的逻辑非常少。
【解决方案2】:

在视图中管理是更好的方式

@Html.TextBoxFor(x=> x.Date, new { @Value = @DateTime.Now.ToShortDateString() })

【讨论】:

  • 欢迎来到 StackOverflow。感谢您的回答。为了便于阅读,最好按照您可以看到的方式格式化代码。
  • 完美满足我的需要
  • 这应该是公认的答案。直截了当,更容易实施。
【解决方案3】:

<input asp-for="date" value="@DateTime.Today" type="datetime" class="form-control" />

这对我有用。请记住根据您的型号更改“日期”。

如果您也需要时间,请使用它

<input asp-for="date" value="@DateTime.Now" type="datetime" class="form-control" />

【讨论】:

    【解决方案4】:

    另一种解决方案:

     @Html.TextBoxFor(model=>model.CreatedOn, new{@value= System.DateTime.Now})
    

    它对我有用,肯定对你有用。

    【讨论】:

      【解决方案5】:
       $(document).ready(function () {
              var dateNewFormat, onlyDate, today = new Date();
      
              dateNewFormat = today.getFullYear() + '-';
              if (today.getMonth().length == 2) {
      
                  dateNewFormat += (today.getMonth() + 1);
              }
              else {
                  dateNewFormat += '0' + (today.getMonth() + 1);
              }
      
              onlyDate = today.getDate();
              if (onlyDate.toString().length == 2) {
      
                  dateNewFormat += "-" + onlyDate;
              }
              else {
                  dateNewFormat += '-0' + onlyDate;
              }
      
              $('#mydate').val(dateNewFormat);
          });
      

      【讨论】:

      • 最好在服务器端进行任何处理。
      猜你喜欢
      • 2011-10-30
      • 2011-04-15
      • 2017-02-27
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      • 2019-09-12
      相关资源
      最近更新 更多