我在MVC項目中使用萬無一失。 我遇到了麻煩,它似乎在進行文本比較以確定結束日期時間是否大於開始日期時間。使用萬無一失,以確保結束日期時間大於開始日期時間
這裏是模型:
public class TestModel
{
[Required]
[DataType(DataType.DateTime)]
public DateTime start { get; set; }
[Required]
[DataType(DataType.DateTime)]
[GreaterThan("start")]
public DateTime end { get; set; }
}
認爲
@model WebApplication1.Models.TestModel
@{
ViewBag.Title = "Home Page";
}
@using (Html.BeginForm("Index2", "Home", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary("", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(m => m.start, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.start, "{0:dd/MM/yyyy HH:mm}", new { @class = "form-control datetimepicker" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.end, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.end, "{0:dd/MM/yyyy HH:mm}", new { @class = "form-control datetimepicker" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Set password" class="btn btn-default" />
</div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
控制器
public ActionResult Index()
{
TestModel model = new TestModel();
// model.start = new DateTime(2016, 5, 31);
//model.end = new DateTime(2016, 8, 31);
model.start = DateTime.Now;
model.end = DateTime.Now.AddMinutes(30);
return View(model);
}
您可以下載我的項目嘗試: https://www.dropbox.com/s/pf0lkg297hq0974/WebApplication1.zip?dl=0
有兩個問題: 1)當你開始日期11/07/2016 23:51和結束日期02/08/2016 00:21你會得到一個驗證錯誤,因爲它認爲結束日期小於開始日期。這似乎與我的文字比較。 2)另外,如果您取消註釋掉兩個model.start和model.end日期初始化語句,則在提交時會得到無效日期。
注意我在使用引導程序datetimepicker,但在文檔準備就緒時將它初始化的位註釋掉了。我認爲這與這個問題有關,但似乎沒有。最終我想讓datetimepicker工作。
另外請注意,我在澳大利亞這樣的日期格式爲DD/MM/YYYY
我猜萬無一失是越野車在這裏。任何其他方式做註釋驗證? – rukiman
問題是'jquery.validate.js'(用於萬無一失)根據'MM/dd/yyyy'格式驗證日期(所以'end = 02/08/2016'是2月8日和'start = 11/07/2016'是12月7日,意思是'end'小於'start')。參考[這個答案](http://stackoverflow.com/questions/39677035/date-of-birth-validation-keeps-showing/39682410#39682410)的一些選項。 –
另外[這個答案](http://stackoverflow.com/questions/27285458/jquery-ui-date-picker-and-mvc-view-model-type-datetime/27286969#27286969)如果你使用jquery-ui datepicker(我假設引導程序datetimepicker也將有一個類似的方法來解析這個值到一個特定的日期格式) –