Mos*_*osh 1 asp.net-mvc command-query-separation
阅读有关CQS原理的人知道:
CQS声明每个方法应该是执行操作的命令,或者是将数据返回给调用者的查询,而不是两者.
说到ASP.NET MVC动作,CQS是否表明我们不应该有这样的动作?
public PartialView InsertOrder(Order order)
{
OrderService.InsertOrder(order);
return PartialView("OrderDetails", order);
}
Run Code Online (Sandbox Code Playgroud)
此方法正在更改系统的状态并返回当前状态.如果在这里应用CQS,我们应该有两个单独的操作:一个用于插入新订单,一个用于获取系统系统(如果第一个Action成功完成,应该从客户端调用).但是,这使编程变得复杂.
我想知道你对此的看法.
MOSH
Web上的命令/查询分离的常见示例是Post/Redirect/Get.
在ASP.NET MVC中,这通常以最简单的方式实现
[HttpPost]
public ActionResult UpdateOrder(Order order){
UpdateOrder(order);
return RedirectToAction("ViewOrder", new { order.OrderId });
}
[HttpGet]
public ActionResult ViewOrder(int orderId){
return View(GetOrder(orderId));
}
Run Code Online (Sandbox Code Playgroud)
对于AJAX和部分视图,这可能不是最佳策略,因为Post/Redirect/Get解决的问题并不真正相关,并且重定向可能很棘手.
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |