gpt4 book ai didi

ajax - 在 ASP.NET MVC 中检查 Ajax 请求并返回 Json 结果的好方法

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

我想让 Controller 中的操作更加灵活。我的意思是 common Action 通常会返回:

...
return View("someView");

或者,例如,如果 Ajax:

...
return Json(new {result="ok"});

我想要的是让我的操作更“多用途”。例如,我基于简单的非 Ajax 请求制作了我的 UI 层,然后我决定让它更加用户友好并添加一些 Ajax。这样我必须纠正一些 Action 以返回 Json。

避免此类事情的最简单(也可能是最糟糕的)方法是在每个(或几乎每个)Action 中编写以下代码:

if (Request.IsAjaxRequest) {
return Json(new {result="ok"});
}
else {
return View("someView")
}

当然这样的方法完全违背了DRY的原则。

所以我想找到实现“多用途”的良好做法。

一种方法是编写一些这样的辅助方法:

public ActionResult CheckForAjax(ActionResult result)
{
return ActionResult(result, Json(new {result="ok"}));
}

public ActionResult CheckForAjax(ActionResult result, Json json)
{
if (Request.IsAjaxRequest) {
return json;
}
else {
return result;
}
}

这样我可以在 Actions 中调用助手:

return CheckForAjax(View(...));

return CheckForAjax(View(...), Json(new {myCustomJson="hi"});

但我不知道这是好方法还是只是重新发明一些自行车 :)也许使用 Action 过滤器会更好?但我不知道如何将自定义 Json 传递给该过滤器...

感谢您的任何建议

最佳答案

说实话,我认为您的原始解决方案很好,您的第二个比第一个更违反 DRY。您的第二个解决方案非常多余,并提供了两种方法来完成一项容易处理的工作。

这不仅是糟糕的风格,也是可维护性的问题。通过将两个函数用于一个目的,您必须在每次发生更改时更新这两个函数。您为什么要这样做也不是很清楚,这将使其他开发人员难以维护您的代码。

如果你问我,KISS(保持简单愚蠢)比 DRY(不要重复自己)更重要。如果您的代码易于理解,那么它就是好代码。

关于ajax - 在 ASP.NET MVC 中检查 Ajax 请求并返回 Json 结果的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9931616/

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