Я использовал удаленную функцию для проверки внутри модели моего C # MVC проекта.пожалуйста, найдите код ниже:
public class ProjectModel {
public string StartDateFormatted { get; set; }
[Remote(action: "CheckEndDate", controller: "Project", AdditionalFields = "StartDateFormatted")]
public string EndDateFormatted { get; set; }
}
Проверка для EndDate всегда должна быть позже StartDate.пожалуйста, найдите код ниже:
public class ProjectController : Controller
{
[AcceptVerbs("Get", "Post")]
public ActionResult CheckEndDate(ProjectModel project)
{
if (project.EndDateFormatted != null && project.StartDateFormatted != null)
{
if (DateTime.Parse(project.StartDateFormatted) > DateTime.Parse(project.EndDateFormatted))
{
return Json("<p><span style='vertical-align: 2px'>Entered Date later than Start Date </span></p>", JsonRequestBehavior.AllowGet);
}
}
return Json(true, JsonRequestBehavior.AllowGet);
}
}
Представление имеет два входа StartDate и EndDate.Я использовал bootstrap.datepicker (https://github.com/uxsolutions/bootstrap-datepicker) в качестве моего средства выбора даты для выбора даты в формате dd-M-yyyy в представлении.
$(document).ready(function () {
try {
$('input.datepicker').datepicker({
format: "dd-M-yyyy",
maxViewMode: 0,
todayBtn: "linked",
clearBtn: true,
autoclose: true,
todayHighlight: true
});
}
catch (e) {
console.log(e.message);
}
});
/*!
* Datepicker for Bootstrap v1.8.0 (https://github.com/uxsolutions/bootstrap-datepicker)
*
* Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
*/
<div class="col-6" style="padding-top:10px;padding-bottom:10px">
<div class="col-11">
<div class="col-12">
@Html.LabelFor(model => model.StartDateFormatted, htmlAttributes: new { @class = "" })
</div>
<div class="col-12">
@Html.EditorFor(model => model.StartDateFormatted, new { htmlAttributes = new { @class = "form-control datepicker newinput", @id = "StartDate", @autocomplete = "off" } })
<br />
@Html.ValidationMessageFor(model => model.StartDateFormatted, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="col-6" style="padding-top:10px;padding-bottom:10px">
<div class="col-11">
<div class="col-12">
@Html.LabelFor(model => model.EndDateFormatted, htmlAttributes: new { @class = "" })
</div>
<div class="col-12">
@Html.EditorFor(model => model.EndDateFormatted, new { htmlAttributes = new { @class = "form-control datepicker newinput", @id = "EndDate", @autocomplete = "off" } })
<br />
@Html.ValidationMessageFor(model => model.EndDateFormatted, "", new { @class = "text-danger" })
</div>
</div>
</div>
Значение, поступающее в функцию проверки CheckEndDate в Project Controller, является значением, ранее сохраненным во входном текстовом поле EndDate.Я предполагаю, что изменение значения инициируется загрузчиком даты начальной загрузки до того, как оно фактически изменит значение.Вот почему функция проверки получает предыдущее значение, а не измененное значение