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

在ASP.NET Core 2.1 Razor Pages中,如何搭建模型并避免使用ID字段?

替换脚手架生成的Edit页面数字ID为自定义哈希字符串URL

没问题,我帮你梳理下怎么把脚手架生成的Edit页面URL里的数字ID替换成你自定义的12位加盐哈希字符串,完全满足你隐藏连续编号的需求:

1. 调整路由规则

首先要修改项目的路由配置,让系统能识别带哈希字符串的URL。假设你用的是ASP.NET MVC(脚手架常用框架),在Program.cs(或者旧版本的Startup.cs)里添加自定义路由,要放在默认路由之前:

// 自定义Student编辑路由,匹配Student/Edit/xxx格式的哈希ID
app.MapControllerRoute(
    name: "StudentEdit",
    pattern: "Student/Edit/{hashId}",
    defaults: new { controller = "Student", action = "Edit" }
);

// 保留原来的默认路由
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}"
);

2. 修改Edit Action方法

原来的Edit方法是接收int类型的id,现在要改成接收string类型的hashId,然后通过这个哈希值去数据库查询对应的记录:

public IActionResult Edit(string hashId)
{
    if (string.IsNullOrEmpty(hashId))
    {
        return BadRequest();
    }

    // 根据你存储的哈希字段查询对应的学生记录
    var student = _context.Students.FirstOrDefault(s => s.YourHashFieldName == hashId);
    if (student == null)
    {
        return NotFound();
    }

    // 后续的编辑逻辑和原来保持一致,比如返回编辑视图
    return View(student);
}

注意:把YourHashFieldName换成你数据库里存储12位哈希字符串的字段名

3. 更新页面上的Edit链接

不管是在列表视图还是其他地方生成的Edit链接,都要把原来的数字ID换成哈希字符串:

  • 如果是Tag Helper写法:
<!-- 原来的写法 -->
<a asp-action="Edit" asp-route-id="@item.Id">编辑</a>

<!-- 修改后的写法 -->
<a asp-action="Edit" asp-controller="Student" asp-route-hashId="@item.YourHashFieldName">编辑</a>
  • 如果是HtmlHelper写法:
<!-- 原来的写法 -->
@Html.ActionLink("编辑", "Edit", "Students", new { id = item.Id }, null)

<!-- 修改后的写法 -->
@Html.ActionLink("编辑", "Edit", "Student", new { hashId = item.YourHashFieldName }, null)

4. 关键注意事项

  • 确保你的哈希字段在数据库中是唯一约束的,避免多个记录对应同一个哈希值导致查询混乱
  • 不需要改动原来的int类型主键,后台依然可以通过哈希值找到对应的主键进行后续操作
  • 因为你只是想隐藏连续编号,不需要额外的加密校验逻辑,只要保证哈希值和记录的映射关系准确即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:23:19