0
我有一個具有可爲空的DateTime屬性的模型。在遠程驗證中使用可爲空的DateTime給出null(ASP .Net MVC)
不需要輸入日期,因此可以爲空類型。但如果它進入IS,它應該被驗證爲及時向前。
對物業的使用遠程驗證然而,總是給人空在我的驗證方法中的參數,即使在日期選擇字段包含使用正確的格式值。我怎樣才能得到它來嘗試從我的輸入字段中的值?
日期選擇器日曆限於無法挑選過去的日期。但是您仍然可以手動輸入日期。這樣做會觸發驗證,但始終使用空值作爲參數中的值。我有一個類似的功能,其中DateTime不可爲空並且它可以正常工作。
模型
[Remote("CheckDateNotInPast", "Validation", ErrorMessage = @"The date must lie forward in time.")]
public DateTime? Deadline { get; set; }
驗證控制器
//The date parameter here is always null, even when the field contains a correct value to check.
public JsonResult CheckDateNotInPast(DateTime? date)
{
return Json((date == null || DateTime.UtcNow.Date <= date.Date), JsonRequestBehavior.AllowGet);
}
VIEW
<div class="col-sm-5">
@Html.TextBoxFor(m => m.Deadline, new { @placeholder = (Model.Deadline == null ? "YYYY-MM-DD" : Model.Deadline.Value.ToString("yyyy-MM-dd")), @class = "form-control", @id = "datepicker" })
<span class="nais-error-text">@Html.ValidationMessageFor(m => m.Deadline)</span>
</div>
謝謝!這解決了我的問題。我正在考慮將它重用於其他類似的屬性,但不知道命名傳遞。 我也檢查出萬無一失。這似乎是所有這些日期驗證我使用的完美的東西。謝謝! – RKrogh
你也可以參考[ASP.NET MVC 3驗證完整指南 - 第2部分](https://www.devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp。 net-mvc-3-part-2)如果你想學習如何創建你自己的驗證屬性 –