漂亮的 URL ASP.NET MVC

2023-11-30

如何获得漂亮的网址,如 localhost:8888/News/Example-post 而不是 localhost:8888/Home/Details/2

我的 HomeController 有以下详细信息方法

public ActionResult Details(int id)
{
    var ArticleToView = (from m in _db.ArticleSet where m.storyId == id select m).First();

    return View(ArticleToView);

由于 ASP.NET 路由系统有些复杂,因此有很多方法可以完成您所描述的任务。

首先,您只想为 Details 方法提供一个漂亮的 URL 吗?如果是这样,您可能会考虑将 HomeController 重命名为 NewsController 或将 Details 方法移动到新的 NewsController 类中 - 这将自动形成/News网址的一部分。如果你不想要一个/Details部分,您可以重命名您的 Details 方法Index,因为它将被自动调用/News。最后,你需要改变你的int id参数传入string name.

如果您想要许多自定义 URL,则必须定义自己的路由。以下是执行此操作的两种方法:

1. 我发现的最简单的方法是use an ASP.NET MVC 基于属性的路由映射器。这样,您所要做的就是为每个需要漂亮 URL 的方法添加一个属性,并指定您想要的 URL。

首先,您必须按照该链接中所述的几个步骤来设置基于属性的路由映射系统。 完成这些步骤后,您必须将方法更改为如下所示:

[Url("News/{name}")]
public ActionResult Details(string name)
{
    var ArticleToView = (from m in _db.ArticleSet where m.storyName == name select m).First();

    return View(ArticleToView);
}

2. 或者,您可以手动定义您的自定义路由Global.asax.cs。在你的RegisterRoutes方法中,可以在中间添加以下内容:

routes.MapRoute(
                "NewsDetails",                                                   
                "News/{name}",                                 
                new { controller = "News", action = "Details", name = "" }
            );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

漂亮的 URL ASP.NET MVC 的相关文章

  • 更改 ASP.NET MVC 筛选器中的视图

    如果用户使用移动浏览器 我想将用户重定向到不同的视图 我决定使用 MVC 过滤器来完成此操作 将其应用于我想要具有移动视图的操作 我相信这个重定向需要在 OnActionExecuted 中发生 但是 filterContext 不包含视图
  • 404 - 在控制器 Y 上找不到公共操作方法 X(ActionInvoker.InvokeAction 返回 false)

    这不是一个重复的问题 这个问题让我发疯 我收到典型错误 控制器 Y 上未找到公共操作方法 X 该错误返回404 Not Found 屏幕截图给了你一个好主意 该图像显示调试器在引发异常的行执行之前暂停 base HandleUnknownA
  • .net mvc 更新了 jquery 现在出现严重错误

    我今天通过 NuGet 更新了 jquery 现在收到以下错误 JavaScript critical error at line 1 column 11 http localhost 53779 Scripts jquery 1 9 0
  • ASP.NET MVC (Razor) 与 Angular 5

    我们目前正在考虑从 ASP NET MVC 迁移到 Angular 5 主要是因为它看起来是最好 最新的框架 然而 我们似乎都无法找出为什么 Angular 比 MVC Razor 更好的硬道理 SPA 与 MPA 似乎是不同的方法 但实际
  • 如何制作 System.Net.Mail MailMessage 的模型?

    所以我的代码中有一些 SMTP 内容 我正在尝试对该方法进行单元测试 所以我一直在尝试模拟 MailMessage 但它似乎从来没有工作过 我认为这些方法都不是虚拟的或抽象的 所以我不能使用最小起订量来模拟它 所以我想我必须手工完成 这就是
  • 如何为 ASP.NET Mvc 缓存数据库中的大量数据

    我的网站使用 linq to sql 从数据库加载大约 50k 行数据 该数据是静态的并且永远不会改变 它的工作原理类似于垃圾邮件过滤器 需要加载所有 50k 行模式 对此进行编程的最佳方法是什么 以获得最佳性能 将整个数据加载到单个静态只
  • ASP.NET MVC FileResult 正在损坏文件

    我一直在尝试让我的 ASP NET MVC 网站将一些数据导出为 Excel 文件 几个小时以来 我一直以为 NPOI 只是在生产垃圾 所以我转向了 EPPlus 我在 LINQPad 中对其进行了测试 它创建了一个正常工作的 XLSX 文
  • 如何将 CSS 类名添加到 ASP.NET MVC 3 Url.Action 链接?

    在 ASP MVC 3 或 4 使用 Razor 中 如何将 CSS 类应用到 Url Action 辅助方法 是否可以 期望的结果 a href class FOO BAR a 我已经走到这一步了 Url Action Index Hom
  • MVC3 RenderPartial 跨多个页面缓存

    谁能告诉我是否可以跨多个页面缓存 RenderPartial 我有一个用于用户配置文件的 RenderPartial 除非用户更新其配置文件 否则它实际上不会改变 所以我真的不想每次加载页面时都回去获取他 她的个人资料 我宁愿传递部分内容
  • 如何在aspasp.net MVC中隐藏Webgrid中的列?

    我是 MVC 新手 我使用Webgrid展示一些客户价值 我需要将列及其标题隐藏起来 我该怎么做呢 CSS gridhide visibility hidden Code grid Column Id ID style gridhide 我
  • MVC 5:模型中的字典绑定到视图中的一系列复选框?

    当我将模型发布到控制器以保存它时 控制器会得到一个空字典 哪里出了问题 绑定工作有什么特别要做的吗 我的模型有这个属性 public Dictionary
  • ASP.NET MVC HttpException 消息未显示在客户端上

    我正在使用 asp net mvc 构建 RESTful Web api 它返回纯 json 数据 在我的客户端上 我使用backbone js 与其进行通信 我的问题是 如何在 JavaScript 中捕获消息 例如 如果用户没有删除权限
  • 使用 SignalR 检测“服务器离线”

    我们尝试在低带宽环境中使用 SignalR 在该环境中 与后端服务器的连接可以随机出现和消失 并且我们希望我们的 Web 应用程序能够做出适当的响应 看起来这个连接 API 在过去的一年里一直在变化 但根据最新的文档 我尝试连接 conne
  • 如何获取类库项目中的连接字符串

    在我的 net 解决方案中 我有两个不同的项目 一个 MVC 核心 Web 应用程序项目和一个类库项目 在Web应用程序项目中 数据库连接字符串位于appsettings json文件 我想从类库项目访问该连接字符串 是否可以 如果是 怎么
  • 有什么方法可以在 ASP.NET MVC Web 应用程序中模拟声明主体吗?

    我有一些ASP NET MVC控制器代码检查用户是否经过身份验证 如果是 则检查用户是否具有特定声明 工作正常 我有一些单元测试 我需要模拟一个IPrincipal 这很容易做到 但我不知道如何检查索赔 我通常会做类似的事情 public
  • 即使在不活动状态下,Hangfire 也会继续运行 SQL 查询

    我正在开发一个 ASP net MVC 5 网站 并使用 Hangfire 来安排一些任务 在本例中每 3 分钟一次 我知道一个事实是 运行这样的任务 以及与之相关的数据库查询 只需要几秒钟 我面临的问题是 Hangfire 似乎让我的 S
  • 配置的托管模块出现 Asp.net MVC 错误

    我有自定义身份验证HttpModule这是相当困难的 但我希望它仅针对托管请求运行 而不是静态请求 Asp net MVC 自动添加 IIS7 Web 服务器的配置部分
  • 将复杂类型数组添加到 RouteValueDictionary

    我想知道是否有一种优雅的方法将复杂类型数组添加到 RouteValueDictionary 或兼容类型 例如 如果我有一个类和一个操作 public class TestObject public string Name get set p
  • 将自定义 ValueProviderFactories 添加到 ASP.NET MVC3?

    我试图尝试将 Protobuf ValueProviderFactory 添加到 MVC3 以便我可以选择 MIME 类型并将原始数据反序列化为操作参数的对象 我还可以使用它来更改默认的 Json 序列化器 看着JsonValueProvi
  • 找不到 securityToken 的有效键映射

    我正在开发测试应用程序 用于在 MVC ASP net Visual studio 2013 中显示经过身份验证的身份声明 我已通过以下方式从活动目录进行身份验证 1 在解决方案中添加新的mvc项目 2 单击更改身份验证 3 选择组织账户

随机推荐