1

这是我的看法:

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

有什么线索吗?

4

1 回答 1

2

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

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

而且,如果您希望所有日期都采用特定格式,无论使用什么浏览器设置,您都可以编写一个自定义模型绑定器,该绑定器将DisplayFormat在出价时使用视图模型上的属性。我已经在this post.

于 2013-03-10T09:36:20.333 回答