C# 从服务器端验证在ASP.NETMVC中显示成功验证消息
如果我的服务器端验证通过,我希望显示一条从服务器传回客户端的消息。可能出现错误消息(定义为ASP.Net MVC中属性的属性),我可以显示成功消息吗?也许我可以点击JQuery验证插件来做这件事 例如,我从位置进行查找,以获得我希望以字符串形式传回的城市,并将其显示为验证成功消息 这是我的密码C# 从服务器端验证在ASP.NETMVC中显示成功验证消息,c#,jquery,asp.net-mvc,jquery-validate,unobtrusive-validation,C#,Jquery,Asp.net Mvc,Jquery Validate,Unobtrusive Validation,如果我的服务器端验证通过,我希望显示一条从服务器传回客户端的消息。可能出现错误消息(定义为ASP.Net MVC中属性的属性),我可以显示成功消息吗?也许我可以点击JQuery验证插件来做这件事 例如,我从位置进行查找,以获得我希望以字符串形式传回的城市,并将其显示为验证成功消息 这是我的密码 [Required()] [MaxLength(5)] [MinLength(5, ErrorMessage = "Can't find location")] [Disp
[Required()]
[MaxLength(5)]
[MinLength(5, ErrorMessage = "Can't find location")]
[Display(Name = "Zip code")]
[Remote("CheckLocation", "Account", AreaReference.UseCurrent, ErrorMessage = "Invalid zipcode")]
public string Location { get; set; }
[HttpGet]
[AllowAnonymous]
public JsonResult CheckLocation(int Location)
{
var city = getLocation(Location);
if (city != null)
{
// pass the city back with the JSon object, but how do I display it???
return Json(true, JsonRequestBehavior.AllowGet);
}
return Json(false, JsonRequestBehavior.AllowGet);
}
编辑以下是我尝试的内容。我现在在c
属性上使用jQuery验证,而不是远程属性。这很好,但是如何在remote中定义success属性并将该成功消息传递给验证消息?然后把颜色改成绿色而不是红色
$(“#位置”)。规则(“添加”{
要求:正确,
最小长度:5,
最大长度:5,
信息:{
必需:“必需输入”,
minlength:jQuery.validator.format(“请注意,{0}个字符是必需的”),
maxlength:jQuery.validator.format(“请注意,{0}个字符是必需的”)
},
远程:{
url:“检查位置”,
类型:“post”,
数据:{
位置:函数(){
返回$('#Location').val();
}
}
}
});
编辑2
我真的想显示来自服务器的success消息(例如,当输入zip时搜索城市),因此我想我可以在远程调用上使用success回调,并在回调中操纵消息颜色,使元素有效。我想如果JSon响应中有字符串,validate会将其设置为false吗
像这样的
[HttpGet]
[AllowAnonymous]
public JsonResult CheckLocation(int Location)
{
var city = getLocation(Location);
if (city != null)
{
return Json(city); // this will be text like "London"
}
return Json(false);
}
$(“#位置”)。规则(“添加”{
要求:正确,
//最小长度:5,
最大长度:5,
信息:{
必需:“必需输入”,
minlength:jQuery.validator.format(“请注意,{0}个字符是必需的”),
maxlength:jQuery.validator.format(“请注意,{0}个字符是必需的”)
},
远程:{
url:“检查位置”,
类型:“post”,
数据:{
位置:函数(){
返回$('#Location').val();
}
},
成功:功能(数据){
//将消息的颜色从红色更改为绿色
//使无效元素有效,使其通过提交
}
}
});
.validate()
方法的用于在验证通过时控制消息元素。默认情况下,验证通过时会隐藏错误消息。使用success
时,您可以修改此行为,并在验证通过时显示图标、消息等。但是,此选项不会从服务器检索邮件
jQueryValidate是客户端代码,只有一个内置方法将从服务器获取响应,这就是方法。但是,这里的问题是,只有通过true
才能通过验证,通过false
才能失败验证。。。如果您传递一个字符串,它将转换为错误消息,验证将失败
好吧,没有内置的方法来做你想做的事情。也许您可以编写一个自定义的success
函数,使用.ajax()
从服务器检索消息
摘要:
插件通常不会在成功时显示消息。success
选项是一种强制显示消息的方法。但是,问题是无法将值传递到此选项中。这只是在字段有效时控制错误消息对象的一种方法
除了remote
方法外,插件通常不与服务器通信。问题在于,只有通过true
才能通过验证。如果传递字符串,验证将失败(该字符串将成为验证错误消息)
编辑以响应OP:
但是我如何在remote中定义一个success属性并将该成功消息传递给验证消息呢
您只能使用来正确操作错误元素。但是,我认为您无法实现所述目标,因为似乎没有办法将字段的值传递到success
选项中。否则,您可以在success
中使用.ajax()
然后把颜色改成绿色而不是红色
这是通过为valid
和error
类定义CSS属性自动完成的。您还可以在success
选项中使用.addClass()
应用自定义类
IMO,使用jQuery验证插件无法实现您的全部目标。但是,您应该彻底检查以确定自己。
我想如果JSon响应中有字符串,validate会将其设置为false吗
是的,正如我在回答中所说的那样。如果服务器响应不是true
,验证将设置为失败。您可以做的是
使用ajax调用自定义操作方法,而不是远程数据注释
var url = "/MyController/CheckLocation/";
$.ajax({
url: url,
data: { zipcode: _zipcode },
cache: false,
type: "POST",
dataType: "json"
}).done(function (obgcity) {
//If objcity is null then display error else display city
}
});
我希望下面的代码能帮助你
public ActionResult CheckLocation(int Location)
{
var city = getLocation(Location);
if (city != null)
{
// city is string type, example: string city="Mumbai";
return Json(new {Status=true, City = city}, JsonRequestBehavior.AllowGet);
}
return Json(new { Status=false, City=""}, JsonRequestBehavior.AllowGet);
}
现在,正如Sparky在上面的消息中提到的,使用ajax调用您的操作或方法,并编写一个自定义的成功函数
var locationId = 20;
$.ajax({
url: "MyController/CheckLocation",
data: { Location: locationId},
cache: false,
type: "GET",
dataType: "json",
success: function (data) {
if(data.Status == true)
{
alert(data.City);
// instead of alert you can create custom message alert box,
// or if you want to display city name or whatever message
// you can try $("#cityId").Html("<p>this is city</p>");
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert("Ajax Failed!!!");
}
});
var locationId=20;
$.ajax({
url:“MyController/CheckLocation”,
数据:{Location:locationId},
cache:false,
键入:“获取”,
数据类型:“json”,
成功:功能(数据){
如果(data.Status==true)
{
警报(数据城市);
//您可以创建自定义消息警报框,而不是警报,
//或者如果你想显示城市名称或任何信息
//你可以试试$(“#cityId”).Html(“这是城市””;
}
},
错误:函数(xhr,aj