Есть ли возможность исправить ввод на стороне клиента с помощью удаленной проверки? Например, пользователь введет дату как 010101, что означает 01 января 2001 , может ли удаленная проверка отразить/передать исправленное значение (010101). > в 01 января 2001) на/на стороне клиента?
У меня есть сценарий, в котором у меня есть JS для форматирования ввода в правильный формат даты. Позже мне пришлось использовать RemoteValidation. Моя удаленная проверка получает дату в формате ddmmyy (RemoteValidation вызывается перед JS), она сначала преобразует ее в правильную дату, а затем выполняет проверку, а затем мой JS вообще не вызывается, и поэтому 010101 не преобразуется в 01-Jan-2001.
Изменить
Есть две вещи, в которых я хотел бы получить помощь
1- В любом случае функция удаленной проверки может изменить модель/данные, переданные ей для проверки, а затем передать ее обратно в представление, чтобы пользователь мог видеть измененную версию модели/данных.
[Удалено:2- У меня есть JavaScript для поля даты, которое форматирует дату при потере фокуса. Он работает нормально. Когда я использовал удаленную проверку вместе с JS, скрипт вообще не вызывался.]
Изменить
Модель
public class master
{
public string sometext { get; set; }
public child mychild { get; set; }
}
public class child
{
public child()
{
thedate = DateTime.MaxValue;
}
[Remote("ValidateDate", "Test", ErrorMessage = "Invalid Date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:mm/dd/yyyy}", NullDisplayText = "Enter Date")]
public DateTime? thedate { get; set; }
}
Просмотреть
@model Models.master
@using Web.Framework
@{
Layout = null;
}
<html>
<head>
<title>Test - My ASP.NET MVC Application</title>
<script src="@Url.Scripts("jquery-1.7.1.min.js")" type="text/javascript"></script>
<script src="@Url.Scripts("jquery-ui-1.8.11.js")" type="text/javascript"></script>
<script src="@Url.Scripts("modernizr-2.0.6-development-only.js")" type="text/javascript"></script>
<script src="@Url.Scripts("AjaxLogin.js")" type="text/javascript"></script>
<script src="@Url.Scripts("jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Scripts("jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Scripts("jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Scripts("MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Scripts("MicrosoftMvcAjax.js")" type="text/javascript"></script>
<script src="@Url.Scripts("myScripts.js")" type="text/javascript"></script>
</head>
<body>
@using (Html.BeginForm("testSubmit", "Test"))
{
@Html.LabelFor(m => m.sometext)
<br />
@Html.TextBoxFor(m => m.sometext)
<br />
@Html.LabelFor(m => m.mychild.thedate)
<br />
@Html.TextBoxFor(m => m.mychild.thedate, new { onblur = "doDate(this, '');" })
@Html.ValidationMessageFor(m => m.mychild.thedate)
<br />
<input type="submit" value = "Submit me" />
}
</body></html>
Контроллер
public ActionResult testSubmit(master model)
{
@ViewBag.Message = "OK";
return View("response");
}
public JsonResult ValidateDate(DateTime? thedate)
{
return Json(HttpContext.Request.QueryString["mychild.thedate"].ToString(), JsonRequestBehavior.AllowGet);
}
Мой удаленный валидатор всегда получает null в thedate
, но я могу получить доступ к значению из строки запроса, но значение не отформатировано, т.е. удаленная проверка вызывается до JS, что означает, что я должен сначала отформатировать дату в удаленной функции, а затем проверить, после проверки, затем это ввод снова форматируется JS, и оба должны быть синхронизированы.
Теперь, как я могу получить отформатированное значение в удаленной функции ИЛИ передать отформатированное значение из удаленной функции в представление?
how can i get the formatted value in Remote function
для этого я реализовал это решение, но теперь мой JS для форматирования даты вообще не вызывается - person bjan   schedule 09.04.2012