c# - 为应用程序定义路由

标签 c# asp.net-mvc asp.net-mvc-routing

您好,我正在尝试为我的 URL 定义路由路径。到目前为止,它看起来是这样的:

routes.MapRoute(
            name: "Category",
            url: "{controller}/DisplayBooksByCategory/{categoryId}/{pageNumber}",
            defaults: new { controller = "Home", action = "DisplayBooksByCategory" }
        );

这行得通,但并不是我想要的。目前我的网址看起来像这样:

http://localhost:51208/Home/DisplayBooksByCategory/7/1

我想要的是能够将 categoryId 替换为实际的类别名称。类别名称不会作为参数传递给仅 categoryId 的操作。这是我的操作:

 public ActionResult DisplayBooksByCategory(int pageNumber, int categoryId)
    {
        int bookByCategoryCount = bookRepository.CountBooksByCategory(categoryId);
        var entities = new BooksAndCategories
        {
            Books = bookRepository.GetBookByCategory(categoryId, pageNumber, numberOfBooksOnPage),
            PageNumber = pageNumber,
            LastPageNumber = (bookByCategoryCount / numberOfBooksOnPage) + 1,
            NumberOfBooksPerPage = numberOfBooksOnPage,
            Categories = categoryRepository.GetCategories(),
            CurentPage = "ProductManager",
            CurentCategory = categoryId
        };
        return View("DisplayBooksByCategory", entities);
    }

有没有什么方法可以使用路由 API 而无需修改操作?

最佳答案

如果您不在请求中传递类别 ID,您打算从哪里获取类别 ID?那是不可能的。类别 ID 应保留为 url 的一部分,但您可以在路由中包含一个友好的类别名称参数。但不要指望 id 会自动从某个地方获得。

就像 StackOverflow 为问题所做的一样。查看您的浏览器地址栏。你应该看到这样的东西:

https://stackoverflow.com/questions/15290490/defining-routing-for-application

注意问题 ID 和用户友好的问题标题。此标题纯属展示用途,完全无视。如果需要,您可以用任意字符串替换它。重要的部分是唯一标识实体的内容(即 id)。

当然,如果您的类别名称是唯一的,您可以在路由中使用类别名称而不是 id。另外,如果您这样做,请不要忘记以下事实:url 的路径部分中不允许使用一些特殊字符。 Scott Hanselman 写了一篇 nice blog post关于这个话题。您将需要过滤掉那些危险字符,并将实际类别名称替换为所谓的 slug。以下是 StackOverflow 是如何做到这一点的示例:https://stackoverflow.com/a/25486/29407

关于c# - 为应用程序定义路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15290490/

相关文章:

c# - 从消息体中读取多个参数

c# - 将免注册 COM list 嵌入到具有 native /托管环境的 C# dll 中

asp.net-mvc - 使用区域时.NET 4.5 MVC RouteCollection.LowercaseUrls 中断

Asp.Net MVC5 - Html.Action - 属性路由 - 导致异常的奇怪行为

c# - 为带有子文件夹的 ASP.NET MVC 区域路由生成 URL

c# - WCF 服务与窗口服务

c# - 抛出异常 C# 进阶

c# - 登录 ASP.Net MVC 应用程序需要什么请求信息

javascript - 从 ASP.NET MVC 端点返回 JavaScript 对象文字,而不是 JSON 字符串

c# - 如何在 C#/ASP.NET MVC 中动态生成此 XML 页面?