是否有可能使用远程验证来纠正客户端的输入? 例如,用户将输入日期 010101 ,这意味着 01-Jan-2001 ,远程验证可以反映/传递整改后的值( 010101 进入 01-Jan-2001 )/到客户端?
我有一个场景,我有JS将输入格式化为正确的日期格式。后来我不得不使用RemoteValidation。我的远程验证以 ddmmyy 格式接收日期(在JS之前调用RemoteValidation),它首先将其转换为正确的日期然后执行验证,然后我的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);
}
我的远程验证器总是在thedate
中收到空值,但我可以从查询字符串中访问该值,但是该值未格式化,即在JS之前调用远程验证,这意味着我必须先在远程函数中格式化日期,然后验证,一旦验证,此输入将由JS再次格式化,并且两者都必须同步。
现在,如何在Remote函数中获取格式化值或将Remote函数中的格式化值传递给View?
答案 0 :(得分:0)
由于我没有得到任何答案所以到目前为止,答案是“否”。