在我的系统中,每个用户都有客户 - 客户有六位数字。我设置了我的路线,以便:
http://localhost/AwesomeSite/123456/Orders
导致控制器方法(OrdersController):
public ActionResult Index(int customerNumber)
{
var result = from o in orderRepository
where o.customerNumber == customerNumber
select o;
return View(result);
}
如果用户没有选择他们的特定客户,我怎么能确保我可以为customerNumber指定一个默认路由值,该值对应于(可能)列表中第一个客户的customerNumber? / p>
我认为我必须这样做的原因是,通过页面上的子菜单(客户 - >订单)也可以使用多个选项,如果登录用户选择订单 - 我应该有一些东西向他们展示,即使这是他们拥有的第一个客户的订单。
答案 0 :(得分:0)
您可以为Customer对象编写自定义模型绑定器(IModelBinder),您将在其中使用customerNumber
route参数来获取给定客户并验证它是否属于当前登录用户(您将使用从ControllerContext参数中获取,该参数将传递给您将实现的Bind方法。如果它不是简单地返回给定用户的第一个客户。然后:
public ActionResult Index(Customer customer)
{
return View(customer);
}