Skip to main content
 首页 » 编程设计

c#之无需复制 Controller 的 Ajax 回发的不同 View

2024年02月20日38lautakyan007

我有一个“添加到购物车”按钮,如果浏览器支持 JS + Ajax(并且没有关闭它),它会使用 Ajax 发布回网站,但是如果他们不支持,或者有它关闭了它执行手动样式的 POST。

我希望完成的是两种 View - 一种是用户使用常规 POST 回发,另一种是来自 AJAX POST。这样我就可以显示内联消息(部分)或全屏。

我宁愿不必将 Controller /操作代码复制两次,它看起来不够优雅。

是否有针对此类问题的推荐解决方案或模式?

请您参考如下方法:

约翰,

您可以对请求使用 IsAjaxRequest 方法来确定这一点。您可以将它应用到您的场景中:

public ActionResult AddToCart(YourCartViewmodel cartViewmodel) 
{ 
     if (ModelState.IsValid) 
     { 
         // do the standard/common db stuff here 
         if(Request.IsAjaxRequest()) 
         { 
             return PartialView("myPartialView"); 
         } 
         else 
         { 
             return View("standardView"); 
         } 
     } 
     /* always return full 'standard' postback if model error */ 
     return View(cartViewmodel);    
} 

虽然可能没有提供完整的解决方案,但这应该会给您一个好的开始...