MVC发布后退日期字段值

时间:2013-03-08 05:33:51

标签: asp.net-mvc

以下是我的观点:

@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}

任何线索?

1 个答案:

答案 0 :(得分:2)

当模型绑定器尝试将请求值解析为DateTime字段时,它将使用当前的线程区域性。因此,例如,如果在<globalization>元素中设置了某些特定文化,则应确保在文本框中输入的日期字符串格式正确。

另一方面,如果您的web.config中没有全球化元素或将文化设置为auto(默认值),则当前文化将由客户端确定。客户端Web浏览器发送包含要使用的值的Accept-Language请求标头。在这种情况下,您需要使用与浏览器中配置的日期格式相同的日期格式。

如果您希望以特定格式包含所有日期,无论使用何种浏览器设置,您都可以编写一个自定义模型绑定器,在绑定值时将使用视图模型上的DisplayFormat属性。我在this post中说明了这种模型绑定器的一个例子。