asp.net-mvc-3 – ASP.Net MVC 3 JSON模型绑定和服务器端模型验证与客户端验证混合
发布时间:2020-05-23 14:31:09 所属栏目:asp.Net 来源:互联网
导读:我一直在玩新的MVC3 Json模型绑定,这是非常好的。 目前,我可以发布JSON到控制器并绑定。模型验证也很好地发生。 但是,如果模型无效,会发生什么? 我想返回JSON并让客户端通知用户(像在mvc中执行正常的客户端验证) 有没有人知道有关如何执行这些的教程?
|
我一直在玩新的MVC3 Json模型绑定,这是非常好的。 目前,我可以发布JSON到控制器并绑定。模型验证也很好地发生。 但是,如果模型无效,会发生什么? 我想返回JSON并让客户端通知用户(像在mvc中执行正常的客户端验证) 有没有人知道有关如何执行这些的教程? 这是甚么可能吗? 还是有框架我可以用来做到这一点? 解决方法在MVC3中使用不引人注意的JavaScript时,以下示例适用于我。我在做非常相似的事情给出以下JsonResponse类:public enum Status
{
Ok,Error
}
public class JsonResponse
{
public Status Status { get; set; }
public string Message { get; set; }
public List<string> Errors { get; set; }
}
我的控制器可以有一个方法: [HttpPost]
public ActionResult Login(UserLoginModel model)
{
JsonResponse res = new JsonResponse();
if (!ModelState.IsValid)
{
res.Status = Status.Error;
res.Errors = GetModelStateErrorsAsString(this.ModelState);
res.Message = "Oh dear,what have you done. Check the list of errors dude!";
}
else
{
// Save it here...
// Return success
res.Status = Status.Ok;
res.Message = "Everything was hunky dory";
}
return Json(res);
}
并且可以枚举ModelStateDictionary的错误,如下所示: private List<string> GetModelStateErrorsAsString(ModelStateDictionary state)
{
List<string> errors = new List<string>();
foreach (var key in ModelState.Keys)
{
var error = ModelState[key].Errors.FirstOrDefault();
if (error != null)
{
errors.Add(error.ErrorMessage);
}
}
return errors;
}
那么在我看来我可以有以下JSON POST: <script type="text/javascript">
$("form").submit(function (evt) {
// validate
$('form').valid();
// extract values to submit
var form = $(this),username = form.find("[name=Username]").val(),password = form.find("[name=Password]").val(),json = JSON.stringify({
Username: username,Password: password
});
$.ajax({
url: form.attr("action"),type: 'POST',contentType: 'application/json; charset=utf-8',dataType: 'json',data: json,success: function (result) {
alert(result.Message);
}
});
// stop form submitting
evt.preventDefault();
});
</script>
我使用jQuery.tmpl来显示错误。我从这个例子中排除了这一点。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 什么是crossdomain.xml文件?
- ASP.NET框架中的异步页面 – 其他线程在哪里,如何重新连接?
- asp.net – 通过MSMQ分离Web和数据库层是必要的还是过度的?
- 如何在asp.net中检测服务器端的浏览器关闭?
- asp.net-mvc-3 – 错误:asp.net mvc3中当前上下文中不存在
- 在我的应用程序中托管ASP.NET
- asp.net-mvc – 在Owin Identity和Asp.Net MVC中正确使用声
- 动态背景图像(ASP.NET)
- asp.net-mvc – MVC:覆盖默认的ValidationMessage
- asp.net – 我应该在我的HttpHandler中设置IsReusable为Tru
推荐文章
站长推荐
- asp.net-mvc – 可以使用ASP.Net MVC Razor视图来
- asp.net – 如何在web.config中增加执行sql查询的
- asp.net 文章分页显示实现代码
- asp-classic – 经典的asp / asp.net网站 – glo
- asp.net-web-api – ApiController的异步方法 –
- asp.net – 应用程序池标识或模拟
- asp.net-mvc-3 – MVC中的SSO(单点登录)
- asp.net-mvc – React.js与asp.net MVC混合进行验
- ASP.NET MVC 3 – 处理多个域并共享单个代码库
- asp.net-mvc – 如何在ASP MVC中自定义Html.Vali
热点阅读
