gpt4 book ai didi

c# - DateTime 编辑器模板未以正确格式呈现日期

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:51 25 4
gpt4 key购买 nike

我有一个带有日期时间输入的页面,以及习惯的 JQuery 日期选择器和一个用于“日期”的编辑器模板,它格式化文本框中的日期和传递到 View 中的日期并添加所需的类等

当我从默认操作调用页面时(它需要一个可为空的日期时间来传递日期),我得到一个填充的日期并且它的格式正确(在本例中为 dd/mm/yyyy )。当我用日期时间调用页面时,它会在操作中正确构建日期,但页面将日期呈现为 "mm/dd/yyy hh:mm:ss" , 而不是所需的格式。我调用操作的 url 是 <url>?reportDate=06%2F13%2F2012%2000%3A00%3A00 ,它是从 html 辅助操作链接呈现的,将模型日期作为参数传递,并且该操作可以将其转换为正确的日期。如果我尝试使用 <url>?reportDate=13%2F06%2F2012 调用该页面(我想将日期显示为的格式),该操作将其作为传递的空参数,页面正确显示日期,但抛出验证异常 - The value '13/06/2012' is invalid.

我在英国,我在 web.config 中将全局化设置为 en-GB ,但出于某种原因,它从外观上验证了美国版本的日期。

型号:

public class ReportModel
{
[Required]
DataType(DataType.Date)]
public DateTime ReportDate { get; set; }
public string Message { get; set; }

//More code here
}

模板(在 Shared\EditorTemplates\Date.spark 中并使用 SparkViewEngine):

<viewdata model="DateTime" />
${Html.TextBox("", string.Format("{0:d}", Model.ToShortDateString()), new { id = "", @class = "datepicker" })}

查看:

<p>
<label for="ProcessDate">
Date
<small>
<span class="error">${Html.ValidationMessageFor(m => m.ReportDate)}</span>
</small>
</label>
${Html.EditorFor(m => m.ReportDate, "Date")}
</p>

行动:

public ActionResult StatementsReport(DateTime? reportDate)
{
if (!reportDate.HasValue)
reportDate = DateTime.Now;

var report = new ReportModel { ReportDate = reportDate.Value.Date };
return View("Statements/GenerateReport", report);
}

如果我需要提供更多详细信息,请告诉我。

非常感谢任何帮助。

最佳答案

默认模型联编程序在解析时使用带有 GET 请求的 InvariantCulture 和用于 POST 请求的线程区域性。这基本上意味着如果您在 GET 请求中传递 reportDate 操作参数(作为查询字符串参数),则必须使用 InvariantCulture 对其进行格式化。理想情况下使用:

some_url?reportDate=yyyy-MM-dd

如果您要发送 POST 请求(也就是提交包含输入字段的表单),则必须根据您的应用程序文化设置日期格式,因为这是模型绑定(bind)器将使用的内容。

检查 following blog post这说明了这一点。

关于c# - DateTime 编辑器模板未以正确格式呈现日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11261965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com