以下是我的观点:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<div class="editor-label">
@Html.LabelFor(model => model.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Title)
@Html.ValidationMessageFor(model => model.Title)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ExpireDate)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ExpireDate)
@Html.ValidationMessageFor(model => model.ExpireDate)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
(基本上是模板视图)
这是我发布的C#:
[HttpPost]
public ActionResult Create(bulletin newBulletin)
{
try
{
var db = Util.GetDb();
var toAdd = new bulletin
{
title = newBulletin.title,
description = newBulletin.description,
expire_date = newBulletin.expire_date,
timestamp = DateTime.Now,
user_id = 1
};
db.bulletins.InsertOnSubmit(toAdd);
db.SubmitChanges();
return RedirectToAction("Index");
}
catch(Exception ex)
{
return View();
}
}
标题和描述已填充,但无论我在expire_date文本框中的日期,它都会显示为:
{1/01/0001 12:00:00 AM}
任何线索?
答案 0 :(得分:2)
当模型绑定器尝试将请求值解析为DateTime字段时,它将使用当前的线程区域性。因此,例如,如果在<globalization>
元素中设置了某些特定文化,则应确保在文本框中输入的日期字符串格式正确。
另一方面,如果您的web.config中没有全球化元素或将文化设置为auto
(默认值),则当前文化将由客户端确定。客户端Web浏览器发送包含要使用的值的Accept-Language请求标头。在这种情况下,您需要使用与浏览器中配置的日期格式相同的日期格式。
如果您希望以特定格式包含所有日期,无论使用何种浏览器设置,您都可以编写一个自定义模型绑定器,在绑定值时将使用视图模型上的DisplayFormat
属性。我在this post
中说明了这种模型绑定器的一个例子。