You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何隐藏URL中的参数/查询字符串?打造SEO友好型URL

解决SEO友好URL的生成问题

你已经在Startup.cs里配置了正确的自定义路由,这一步很棒!现在只需要确保页面上的编辑按钮能生成你想要的manage-your-project/{id}格式URL,而不是带查询参数的旧格式。咱们一步步来调整:

1. 修改视图中的编辑按钮链接

原来的按钮可能用了默认的Url.Action方法,这会生成带参数的URL。换成Url.RouteUrl并指定你定义的路由名称,就能精准匹配自定义路由了。示例代码如下:

@foreach (var item in Model) { 
    count = count + 1; 
    <tr> 
        <td scope="row">@count</td> 
        <td>@item.ProjectName</td> <!-- 这里替换成你实际的项目字段 -->
        <td>
            <!-- 用RouteUrl指定路由名称,生成友好URL -->
            <a href="@Url.RouteUrl("edit-project-route", new { id = item.Id })" class="btn btn-primary">编辑</a>
        </td>
    </tr>
}

2. 确认路由配置的正确性

确保你的Startup.cs里的路由配置放在正确的位置,并且没有被其他路由优先级覆盖。完整的配置示例:

app.UseEndpoints(endpoints =>
{
    // 自定义编辑项目路由,要放在默认路由前面,优先级更高
    endpoints.MapControllerRoute(
        name: "edit-project-route",
        pattern: "manage-your-project/{id?}",
        defaults: new { controller = "Manager", action = "EditProject" });

    // 默认路由(如果需要保留的话)
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

⚠️ 注意:自定义路由要放在默认路由前面,不然会被默认路由先匹配到,导致友好URL不生效。

3. 检查Controller动作的参数匹配

你的ManagerController里的EditProject方法要正确接收id参数,参数名称必须和路由里的id?一致:

public IActionResult EditProject(int? id)
{
    if (id == null)
    {
        return NotFound();
    }
    // 这里写你的项目查询和编辑逻辑
    return View();
}

4. 测试验证

运行项目后,右键点击编辑按钮,查看链接地址,应该是/manage-your-project/xxx(xxx是项目ID)的格式,而不是/Manager/EditProject?id=xxx。如果还是没生效,检查路由名称的拼写是否和Url.RouteUrl里的一致,参数名称是否完全匹配。

内容的提问来源于stack exchange,提问作者Techno Crave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:09:12