是否有可能使用远程验证在客户端纠正输入?例如,用户将输入日期为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 in thedate
,但我可以从查询字符串访问值,但该值未格式化,即远程验证在 JS 之前被调用,这意味着我必须先在远程函数中格式化日期然后验证,一旦验证然后这个输入由JS再次格式化,两者都必须同步。
现在,我怎样才能在远程函数中获取格式化值或将格式化值从远程函数传递到视图?