当用户未选择特定选项时,如何选择默认路由参数值?

时间:2012-03-13 17:33:23

标签: asp.net-mvc

在我的系统中,每个用户都有客户 - 客户有六位数字。我设置了我的路线,以便:

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>

我认为我必须这样做的原因是,通过页面上的子菜单(客户 - >订单)也可以使用多个选项,如果登录用户选择订单 - 我应该有一些东西向他们展示,即使这是他们拥有的第一个客户的订单。

1 个答案:

答案 0 :(得分:0)

您可以为Customer对象编写自定义模型绑定器(IModelBinder),您将在其中使用customerNumber route参数来获取给定客户并验证它是否属于当前登录用户(您将使用从ControllerContext参数中获取,该参数将传递给您将实现的Bind方法。如果它不是简单地返回给定用户的第一个客户。然后:

public ActionResult Index(Customer customer)
{
    return View(customer);
}