看此之后的视频 ,如果我用我的错控制器,我想知道。 究竟应该怎样控制器包含哪些内容?
对于我的博客,我有一个post控制器,具有方法:创建节目列表loadPost喜欢不喜欢
而我的职务模型只有少数访问规则,验证规则和相关信息。 有没有在网络上MVC应用程序的任何例子吗?
看此之后的视频 ,如果我用我的错控制器,我想知道。 究竟应该怎样控制器包含哪些内容?
对于我的博客,我有一个post控制器,具有方法:创建节目列表loadPost喜欢不喜欢
而我的职务模型只有少数访问规则,验证规则和相关信息。 有没有在网络上MVC应用程序的任何例子吗?
我强烈建议你阅读http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/04/24/how-we-do-mvc.aspx
这里是我的什么控制器不应该做的不完全名单:
应该做:
坏:
public ActionResult PlaceOrder(Guid orderid)
{
if (HttpContext.Session["user"] == null)
return Redirect("Login");
if (!ValidOrderId(orderid)) return Redirect();
var order = cart.Get(orderid);
if (order == null) { ViewData["orderid"] = orderid; return View("Select"); }
order.Status = OrderStatus.Placed;
foreach (var item in order.Items)
item.Update();
var cart = Cart.GetCurrent();
cart.Save(order);
return Redirect("Show", "Orders", new { orderid = orderid });
}
好
[Authorize]
[ModelStateToTempData]
// OrderViewModel.Id/OrderViewModel.Instance - validates id,
// gets it from repository, set Instance or ModelState error
public ActionResult PlaceOrder(OrderViewModel<Order> order)
{
if (!ModelState.IsValid)
return View("Select", order);
var order = order.InstanceFromDatabase;
_injectedCart.SetOrderPlaced(order);
return RedirectToAction<OrdersController>(c => c.Show(order));
}
顺便说一句,我很少看到好的MVC例子,包括的NerdDinner。 他们都处理范围内的行为,没有任何视图模型,等业务逻辑。 这通常是因为他们都intendet什么好 - MVC功能演示 - 但它不应该被视为良好的设计实例。 更或多或少很好的例子是CodeCampServer ,与accompanion书ASP.NET MVC在行动一起。 但也不是没有缺点(贫血域模型,例如)。
但是,如果不加以遵循领域驱动设计,而是有一个简单的数据驱动的要求,事情可能会更加容易。
我努力以脂肪的ViewModels薄控制器,该控制器给工作,我的业务对象。
的NerdDinner是一个很好的示例应用程序,但StackOverflow的是我最喜欢的MVC网站的例子。
善良,
和
控制器应包含足够的逻辑来解释什么用户说,跑过处理开了一个服务层之前做。 因此,如果用户说“马克这篇文章是一个我喜欢”,点击喜欢按钮,该控制器可确保用户被授权,然后让我们的服务层手柄实际上做标记后等。如果用户的工作为“创建一个新的博客条目”,那么控制器将收集后,标记,时间戳及其他相关信息,并做最小的数据验证。 然后它将在处理移交给一个服务层。 如果服务层发现的问题,那么就应该抛出一个异常,然后你就可以在控制器处理。