我使用telerik DatePickerFor获取datetime值。这是我的模型类:
grunt run:android
这是我的观点类:
public class Kisi
{
[Display(Name="date1")]
public DateTime date1{ get; set; }
[Display(Name = "date2")]
public DateTime date2 { get; set; }
[Display(Name = "date3")]
public DateTime date3{ get; set; }
}
这是我的控制器:
//most parts ommited for brevity
@model LojmanMVC.Domain.Kisi
@{
ViewBag.Title = "KisiOlustur2";
}
<h2>KisiOlustur2</h2>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<!-- date1-->
<div>
<div class="editor-label">
<label>date1? </label>
</div>
<div class="editor-field">
@(Html.Kendo().DatePickerFor(m=>m.date1)
.Name("dtpickerMemuriyetBaslama")
.Min(new DateTime(1900, 1, 1))
.Max(new DateTime(2099, 12, 31))
.Value(DateTime.Today)
)
<br />
<!-- Html.ValidationMessageFor(model => model.MemuriyetBaslamaTarihi)-->
</div>
</div>
<div id="tey" style="display:none">
<div class="editor-label">
@Html.LabelFor(model => model.date2)
</div>
<div class="editor-field">
@(Html.Kendo().DatePickerFor(m=>m.date2)
.Name("dtAskerlikBaslama")
.Min(new DateTime(1900, 1, 1))
.Max(new DateTime(2099, 12, 31))
.Value(DateTime.Today)
)
@Html.ValidationMessageFor(model => model.AskerlikBaslangicTarihi)
</div>
</div>
<div id="hey" style="display:none">
<div class="editor-label">
@Html.LabelFor(model => model.date3)
</div>
<div class="editor-field">
@(Html.Kendo().DatePickerFor(m=>m.AskerlikBitisTarihi)
.Name("dtAskerlikBitis")
.Min(new DateTime(1900, 1, 1))
.Max(new DateTime(2099, 12, 31))
.Value(DateTime.Today)
)
<p>
<input type="submit" value="Oluştur" />
</p>
</div>
</div>
在sisi变量,date1,date2和date3为空,即使我输入了它们。我该如何解决?提前谢谢。
答案 0 :(得分:1)
首先,我建议添加到您的模型中的一件事如下:
$j("["+parmName+"]").each(function(){
var value = $j(this).attr(parmName);
if($j("["+parmName+"='"+ value + "']").length > 1) {
console.log('duplicate', parmName, 'for value', value);
}
});
您可以根据自己的喜好自定义格式字符串以及错误消息。这将确保用户输入的内容实际上必须是正确格式的日期。
但是,我认为你的问题是你实际上没有将日期从视图传递给控制器,你需要给你的DatePicker一个名字,然后将这个名字传递给控制器,例如:
[DataType(DataType.Date, ErrorMessage = "Please enter a valid date.")]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
[Display(Name="date1")]
public DateTime date1{ get; set; }