Има ли някаква възможност за коригиране на входа от страна на клиента с помощта на дистанционно валидиране? Например, потребителят ще въведе датата като 010101, което означава 01-Jan-2001, може ли дистанционното валидиране да отрази/предаде коригираната стойност (010101 в 01-Jan-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 и двата трябва да бъдат синхронизирани.
Сега, как мога да получа форматираната стойност във функцията Remote ИЛИ да предам форматираната стойност от функцията Remote към View?
how can i get the formatted value in Remote function
за да постигна това, внедрих това решение, но сега моят JS за форматиране на датата изобщо не се извиква - person bjan   schedule 09.04.2012