gpt4 book ai didi

asp.net-mvc - PRG 模式是否与 AJAX 表单帖子不兼容?

转载 作者:行者123 更新时间:2023-12-04 12:00:56 25 4
gpt4 key购买 nike

我对所有表单都使用 post-redirect-get 模式,但现在需要添加 AJAX 功能来改善用户体验。我最初的想法是两者不混合。

在 PRG 场景中,如果出现验证错误,我将让我的 post 操作重定向回我的 get 操作,否则重定向到我的成功 get 操作。

在 AJAX 场景中,我需要以任何一种方式返回局部 View 。更典型的是,我会先检查它是否是 AJAX 请求。如果是,则返回局部 View ,否则返回 View 。

有什么想法或建议吗?

最佳答案

我们在我们的应用程序中使用 Post-Redirect-Get。这是我们所做工作的本质,它围绕着 Request.IsAjaxRequest()方法并将您的 View 拆分为 .aspx,每个 .aspx 托管一个 .ascx,以便可以同步和异步调用每个 can 操作(即通过 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 's(来自 xVal,以便将模型验证错误与其他“更严重”的异常区别对待。
catch (RulesException re)
{
re.AddModelStateErrors(ModelState, "");

return View(foo);
}

尽管如此,有时我会偷偷怀疑我们可能做错了。

关于asp.net-mvc - PRG 模式是否与 AJAX 表单帖子不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3378781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com