asp.net-mvc – PRG模式是否与AJAX表单帖子不兼容?
发布时间:2020-12-16 04:04:05 所属栏目:asp.Net 来源:网络整理
导读:我正在为所有表单使用post-redirect-get模式,但现在需要添加 AJAX功能来改善用户体验.我最初的想法是两者不混合. 在PRG场景中,我会发布我的帖子操作,如果存在验证错误,则会重定向回我的get操作,否则重定向到我的成功获取操作. 在AJAX场景中,我需要以任一方式
我正在为所有表单使用post-redirect-get模式,但现在需要添加
AJAX功能来改善用户体验.我最初的想法是两者不混合.
在PRG场景中,我会发布我的帖子操作,如果存在验证错误,则会重定向回我的get操作,否则重定向到我的成功获取操作. 在AJAX场景中,我需要以任一方式返回局部视图.更典型的是,我会首先检查它是否是一个AJAX请求.如果是,则返回局部视图,否则返回视图. 有什么想法或建议吗? 解决方法
我们在我们的应用中使用Post-Redirect-Get.这是我们所做工作的本质,它取决于Request.IsAjaxRequest()方法,并将您的视图拆分为.aspx,每个都托管.ascx,以便可以同步和异步(即通过Ajax)调用每个操作.
[AcceptVerbs(HttpVerbs.Post)] public ActionResult Edit(Foo foo) { try { // Save the changes to the data store unitOfWork.Foos.Attach(foo); unitOfWork.Commit(); if (Request.IsAjaxRequest()) { // The name of the view for Ajax calls will most likely be different to the normal view name return PartialView("EditSuccessAsync"); } else { return RedirectToAction("EditSuccess"); } } catch (Exception e) { if (Request.IsAjaxRequest()) { // Here you probably want to return part of the normal Edit View return PartialView("EditForm",foo); } else { return View(foo); } } } 我们还有一个轻微的变体,我们专门捕获RulesException(从xVal开始,以便将模型验证错误与其他“更严重”的异常区别对待). catch (RulesException re) { re.AddModelStateErrors(ModelState,""); return View(foo); } 尽管如此,有时我会怀疑我们可能会略微做错. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 如何在特定的mvc3控制器/动作中授权用户角色
- 创建全局ASP.NET功能?
- iis – 在ASP类中处理End Request事件
- asp.net – 如何在Json中使用Gson将对象类型包含在asmx web
- mvc项目架构分享系列之架构搭建之Infrastructure
- asp.net – 没有参数的WebResource.axd请求 – 这是一个无效
- asp.net-mvc – MVC – 更改模型的视图中的值[封闭]
- asp.net-mvc – 使用Html.BeginForm发布到当前控制器
- asp.net-mvc – 使用SimpleInjector为AccountController注册
- 如何在asp.net vnext中使用协议缓冲区?
推荐文章
站长推荐
- asp.net – 检查控制启动的AJAX请求
- asp.net – 检查ValidationGroup是否从代码隐藏有
- ASP.NET图表控件 – 如何使用空自动绘制图表区域
- asp.net-mvc – ASPNET MVC中的Modelbinding数据
- asp.net-mvc – 单个控制器的MVC多个视图
- ASP.NET站点移动到IIS7会导致页面输出中出现乱码
- asp.net-mvc – 使用数据注释验证ASP.NET MVC 2中
- asp.net-mvc – 优化性能或属性路由和路由表
- asp.net-mvc – ScriptBundle中的{version}是什么
- 在ASP.NET MVC Core控制器的构造函数中设置ViewB
热点阅读