我应该如何在 global.asax 中定义路由才能使用可为空的参数和逗号作为分隔符?
我正在尝试为我的搜索用户页面实施路由规则,例如
"{Controller}/{Action},{name},{page},{status}"
Global.asax 的完整条目:
routes.MapRoute(
"Search",
"{controller}/{action},{name},{page},{status}",
new { controller = "User", action = "Find",
name = UrlParameter.Optional,
page = UrlParameter.Optional,
status = UrlParameter.Optional }
);
当我输入所有参数时,像上面定义的例程工作正常,但是当某些参数等于空时,路由失败(例如“user/find,”)
根据点击率 /users/148403/clicktricity下面的评论 - 处理请求的操作方法的签名:
public ActionResult Find(string userName, int? page, int? status)
{
// [...] some actions to handle the request
}
一开始我是通过 VS 调试器测试路由,现在我使用上描述的路由调试器菲尔的 Haack 博客 http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx。该工具确认 - 带有空值的路由未正确处理(或者我做错了什么;))