gpt4 book ai didi

c# - MVC4 无效的日期时间值

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

我尝试了几乎所有我在互联网上和本网站上阅读的内容(web.config 中的全局化文化,我的模型中添加的 DisplayFormat,......)但我没有找到我的答案。

我的网络应用程序允许用户通过提供一些信息来创建人物。这些信息之一是开始日期,它是一个 DateTime 值。我正在使用 jQuery UI 日期选择器来允许通过日历选择日期。当我选择我的日期(实际上是一个大于 12 的日期)时,应用程序向我显示一条验证错误消息。例如,如果我选择今天的日期,它会出现:The value '03/15/2013' is not valid for StartDate.

我的观点:

    @model BuSIMaterial.Models.Person

@{
ViewBag.Title = "Create";
}

<h2>Create</h2>

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)

<fieldset>
<legend>Person</legend>

<div class="editor-label">
First name :
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.FirstName, new { maxlength = 50 })
@Html.ValidationMessageFor(model => model.FirstName)
</div>

<div class="editor-label">
Last name :
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.LastName, new { maxlength = 50 })
@Html.ValidationMessageFor(model => model.LastName)
</div>

<div class="editor-label">
National number :
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.NumNat, new { maxlength = 11 })
@Html.ValidationMessageFor(model => model.NumNat)
</div>

<div class="editor-label">
Start date :
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.StartDate, new {@class = "datepicker" })
@Html.ValidationMessageFor(model => model.StartDate)
</div>

<div class="editor-label">
End date :
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.EndDate, new { @class = "datepicker" })
@Html.ValidationMessageFor(model => model.EndDate)
</div>

<div class="editor-label">
Distance House - Work (km) :
</div>
<div class="editor-field">
@Html.EditorFor(model => model.HouseToWorkKilometers)
@Html.ValidationMessageFor(model => model.HouseToWorkKilometers)
</div>

<div class="editor-label">
Category :
</div>
<div class="editor-field">
@Html.DropDownList("Id_ProductPackageCategory", "Choose one ...")
@Html.ValidationMessageFor(model => model.Id_ProductPackageCategory) <a href = "../ProductPackageCategory/Create">Add a new category?</a>
</div>

<div class="editor-label">
Upgrade? :
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Upgrade)
@Html.ValidationMessageFor(model => model.Upgrade)
</div>

<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}

<div>
@Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/jqueryui")
@Styles.Render("~/Content/themes/base/css")
<script type="text/javascript">
$(document).ready(function () {
$(".datepicker").datepicker({

});
});
</script>
}

我的个人模型中的开始日期:

[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.DateTime StartDate
{
get
{
return _StartDate;
}
set
{
OnStartDateChanging(value);
ReportPropertyChanging("StartDate");
_StartDate = StructuralObject.SetValidValue(value);
ReportPropertyChanged("StartDate");
OnStartDateChanged();
}
}
private global::System.DateTime _StartDate;
partial void OnStartDateChanging(global::System.DateTime value);
partial void OnStartDateChanged();

有人有办法解决这个问题吗?

最佳答案

首先,您似乎将原始实体传递给您的 View ,这不是一个好主意。 MVC 中的正确方法是创建一个 View 模型,其中包含您的 View 所需的所有信息,仅此而已。

现在解决你的问题:

As I choose my date (in fact, a date where the day is greater than 12), the application shows me an validation error message

这给我的印象是文化冲突问题,您的 MVC 应用期望日期为 dd/mm/yyyy 但接收日期为 mm/dd/yyyy。 MVC 中的默认模型绑定(bind)器将使用当前线程的文化 - 如果您确定该线程正在使用正确的文化,那么我的猜测是它不喜欢您只传递一个Date 而不是 DateTime,虽然不太可能。

通常最好的方法是使用与文化无关的标准化日期格式,即 UTC Format ,这样您就可以避免任何转换问题。

关于c# - MVC4 无效的日期时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15433151/

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