传递ID,但不要在实际网址中显示

Vin*_*den 5 c# asp.net-mvc url-routing asp.net-mvc-routing

我想获得友好的网址.目前友好的网址是这样的:

本地主机/客户/ 1/namehere

我希望他们这样:

本地主机/客户/ namehere

但仍然需要id(因为我用这个id搜索我的数据库).我的可能性是什么?这甚至可能吗?

这是我的MapRoute:

context.MapRoute(
            "Customer_Default",
            "customer/{customername}/",
            new { controller = "customer", action = "view", id = "", customername = "" }
        );
Run Code Online (Sandbox Code Playgroud)

这是我链接的方式:

@Html.ActionLink(c.Bedrijfsnaam, "view", "customer", new { id = c.Klantnummer, customername = UrlEncoder.ToFriendlyUrl(c.Bedrijfsnaam) }, null)
Run Code Online (Sandbox Code Playgroud)

谢谢.

更新: 哦,如果用户更改它并不重要.我只是想让它不显示.这样用户就可以轻松地将网址更改为他们想去的地方.而且不必担心ids.(但我仍然需要它.:))

Sal*_*iti 2

如果我正确理解你的问题,id 是客户端 ID。

如果您根本不想显示您的 ID,解决方案是不使用数字 ID 并直接按客户名称进行查询。这确实有点慢,但也不是那么慢。您可以通过按客户端名称进行“反向”查询来获取 id,也可以按客户端名称进行索引。

避免通过用户名进行过多查询的一种可能性是使用 post 将 id 存储在会话中或表单中的隐藏字段中(您可以混合使用 http post 和 http get 而不会出现太多问题)。你可以存储两个字段:客户端名称和客户端id,如果客户端名称与http get中的字段匹配,则不需要获取id。如果不匹配,您可以在数据库中查询 id。这个想法是缓存 id,因此客户端只需搜索一次 id。