Lar*_*ard 3 c# asp.net asp.net-mvc razor
奇怪的问题可能非常明显。在我的视图模型中,我有一个在控制器中设置的日期。当我在视图中渲染文本框时,它是空的。
查看型号:
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}")]
public DateTime DateStart { get; set; }
Run Code Online (Sandbox Code Playgroud)
控制器:
//GET: InvoicePrice
public ActionResult Index(InvoicePriceViewModel model)
{
model.DateStart = DateTime.Now;
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
视图的 HTML:
<p>
Date:<br />
@Html.TextBoxFor(model => model.DateStart, new { @class = "form-control", placeholder = "Invoice date", type = "date" })
</p>
Run Code Online (Sandbox Code Playgroud)
当我打开它时,我在这里看到空文本框:
我希望看到“2017 年 11 月 28 日”作为我当前的日期。
我想我在这里遗漏了一些明显的东西。但它是什么?
这里实际上有几个问题,我将尝试解释它们。
\n\n第一个问题是日期输入仅接受yyyy-mm-dd格式的值并根据浏览器本地化设置显示它们:
\n\n\n需要注意的一件事是,显示的日期格式与实际值不同 \xe2\x80\x94 显示的日期格式将根据用户浏览器的设置区域设置进行选择,而日期值始终采用 yyyy 格式毫米-日。
\n
这意味着您需要更改您的DataFormatString并设置ApplyFormatInEditMode为 true:
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]\nRun Code Online (Sandbox Code Playgroud)\n\n但是它仍然不会产生任何效果,因为为了考虑您的自定义格式,您需要使用Html.EditorFor:
@Html.EditorFor(model => model.DateStart,\n new { htmlAttributes = new { @class = "form-control", placeholder = "Invoice date" } })\nRun Code Online (Sandbox Code Playgroud)\n\n或者您可以忽略DisplayFormatAttribute并在以下位置指定格式Html.TextBoxFor:
@Html.TextBoxFor(model => model.DateStart, "{0:yyyy-MM-dd}",\n new { @class = "form-control", placeholder = "Invoice date", type = "date" })\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3568 次 |
| 最近记录: |