我在 Global.asax(MVC 3 web 项目)中定义了以下路由:
routes.MapRoute(
"BlogCategory", // Route name
"Blog/Category/{*category}", // URL with parameters
new { controller = "Blog", action = "Index", category = "" } // Parameter defaults
);
我的操作接受一个类别参数,如下所示:
public ViewResult Index(string category, int page = 1)
{
PostListViewModel viewModel;
if (string.IsNullOrEmpty(category))
{
....show all cats else show only the one passed in
这工作正常,并将类别传递给控制器,适当地过滤我的结果。
我的问题是当我创建的类别之一的类别名称看起来像这样时:
项目/实验室
(注意空格和斜线)
这将创建一个类似这样的 URL:
/博客/类别/项目%20/%20Lab
当我点击链接时,我收到了这个错误:
说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。
请求的 URL:/Blog/Category/Projects/Lab
调试时它永远不会到达索引操作。
我的问题是,我怎样才能使这项工作,或者我必须在创建类别名称时进行一些输入验证以防止这种情况发生?