【发布时间】:2013-11-21 16:20:13
【问题描述】:
我正在构建一个 MVC4 应用程序,在我的模型中我有这些字段:
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime mDateCreated { get; set; }
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime? mDateModified { get; set; }
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime? mDateLastDisplayed { get; set; }
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime mStartDate { get; set; }
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime? mEndDate { get; set; }
我正在尝试在视图中设置日期选择器。这是我到目前为止所做的:
<div class="float-left">
<p>Date Created:</p>
<p>Date of last modification:</p>
<p>Date Last Displayed:</p>
<p>Date of promotion's start:</p>
<p>Date of promotion's end:</p>
</div>
<div class="float-right">
<p>
@Html.TextBoxFor(_item => _item.mCardOfTheDay.mDateCreated, new
{
@value = Model.mCardOfTheDay.mDateCreated,
@selectedDate = Model.mCardOfTheDay.mDateCreated,
@class = "datePick",
@type = "date",
@id = "dateCreated"
})
</p>
<p>
@(Model.mCardOfTheDay.mDateModified != null ? Html.DisplayFor(_item => _item.mCardOfTheDay.mDateModified) : Html.Label(ValueDomain.FIELD_UNAVAILABLE))
</p>
<p>@(Model.mCardOfTheDay.mDateLastDisplayed != null ? Html.DisplayFor(_item => _item.mCardOfTheDay.mDateLastDisplayed) : Html.Label(ValueDomain.FIELD_UNAVAILABLE))</p>
<p>
@*@Html.EditorFor(_item => _item.mCardOfTheDay.mStartDate, new { @class = "datePick", @type="date" })*@
@*@Html.TextBoxFor(_item => _item.mCardOfTheDay.mStartDate, new {@id = "dateStart"})*@
@* @Html.TextBoxFor(_item => _item.mCardOfTheDay.mStartDate, new
{
@value = (DateTime?) Model.mCardOfTheDay.mStartDate,
@selectedDate = (DateTime?) Model.mCardOfTheDay.mStartDate,
@class = "datePick",
@type = "date",
@id = "dateStart"
})*@
</p>
<p>
@Html.TextBoxFor(_item => _item.mCardOfTheDay.mEndDate, new
{
@value = Model.mCardOfTheDay.mEndDate,
@selectedDate = Model.mCardOfTheDay.mEndDate,
@class = "datePick",
@type = "date",
@id = "dateEnd"
})
</p>
</div>
<div class="clear"></div>
还有 CSS 来展示我对这些类所做的事情:
$('.datePick').datepicker({
dateFormat: "dd/ww/yy",
});
$('.datePick').each(function () {
var a = $(this).datepicker({
dateFormat: "dd/ww/yy",
defaultDate: new Date($(this).val())
});
});
这显示了我遇到的各种问题。第一:
- 将
Html.TexborFor助手与@value、@selectedDate等一起使用会显示一个日期选择器,但此日期选择器的默认显示 值是aaaa-mm-dd,而不是绑定到模型和当我将模型传递给控制器时,没有保留任何数据(意味着 mEndDate 始终为空); - 仅尝试设置日期选择器会得到相同的结果;
- 这是一个 Html 代码示例,向您展示我的“结果”:
<input class="input-validation-error datePick" data-val="true" data-val-date="The field mDateCreated must be a date." data-val-required="The mDateCreated field is required." id="dateCreated" name="mCardOfTheDay.mDateCreated" selectedDate="11/21/2013 00:00:00" type="date" value="" /> - 如果我使用 EditorFor,我只有一个字符串格式的日期,没有日期选择器。
我想要的是一个日期选择器,其中选择了正确的日期,将所选日期传递给 post 中的控制器方法。谁能帮我弄清楚为什么这不起作用?
【问题讨论】:
标签: html jquery-ui asp.net-mvc-4 date datepicker