asp.net-mvc – PRG模式是否与AJAX表单帖子不兼容?
发布时间:2020-05-28 17:54:14 所属栏目: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 – 如何使用html帮助器在asp.net mvc中创建一个
- asp.net-mvc – ASP.Net MVC:dbml文件的最佳实践
- asp.net-web-api – Web API中的多态:单端点可能?
- asp.net-core – 如何在Asp.net Core中检测会话超时?
- asp.net-mvc – MVC HTML.RenderAction – 错误:持续时间必
- asp.net-mvc – 如何实现在jqgrid搜索?
- asp.net-mvc – 如何使用Html.EditorFor与MVC3设置id
- asp.net-mvc-3 – 如何在MVC3上使用authorize属性
- asp.net-mvc – 在MVC Razor视图中使用@RenderBody有什么意
- asp.net – 在资源文件中使用HTML
