C# 如何使用定位标记将id传递给控制器,并在浏览器url中仅显示名称

C# 如何使用定位标记将id传递给控制器,并在浏览器url中仅显示名称,c#,html,asp.net-mvc,razor,C#,Html,Asp.net Mvc,Razor,我的视图中有一个标题,当我点击该标题链接时,它会将我带到不同的页面。到目前为止,它还可以工作,但我需要在我的浏览器url中显示名称,而不是下面的id //mysite.com/jobs/auto-damage-regulator-trainee-houston-and-around-cities 而不是 //mysite.com/jobs/id=1234&name=休斯顿及周边城市的汽车损伤理算师实习生 现在,我的代码在下面,在浏览器url中显示id和名称 视图: 我需要id my href传递

我的视图中有一个标题,当我点击该标题链接时,它会将我带到不同的页面。到目前为止,它还可以工作,但我需要在我的浏览器url中显示名称,而不是下面的id

//mysite.com/jobs/auto-damage-regulator-trainee-houston-and-around-cities

而不是

//mysite.com/jobs/id=1234&name=休斯顿及周边城市的汽车损伤理算师实习生

现在,我的代码在下面,在浏览器url中显示id和名称

视图:


我需要id my href传递给控制器以获取其他详细信息,但我不想在url中显示id。如何实现这一点?

href标记中的一个简单链接向服务器发出GET请求,服务器通过url查询字符串传递数据。要将数据传递到服务器而不让它出现在url中,您需要更改为不同的HTTP方法,例如POST并在正文中传递数据。在您的用例中,这不是一种非常restful的方法,但是这更像是一种设计决策。如果您不想在url中显示参数,那么使用
GET
而不是
POST
。在
POST
中,数据将在
请求正文中
[href标记中的一个简单链接,向服务器发出GET请求,该请求通过url查询字符串传递数据。若要将数据传递给服务器,而不使其出现在url中,您需要更改为其他HTTP方法,例如POST并在正文中传递数据。在您的用例中,这不是一种非常restful的方法,但这更像是一种design决策。如果您不想在url中显示您的参数,请使用
GET
而不是
POST
。在
POST
中,数据将位于
请求正文
中。相关信息可能重复[
 var urlName = @Model.jb_title.Replace(" ", "-").Replace('/', '-').Replace('?', '-').Replace(':', '-');
 <a href="@Url.Action("Jobs", "HomeController", new { id = @id, name = @urlName })" class="hyperlinks"><h6>@Model.jb_title</h6></a>
    public ActionResult Jobs(int? id)
    {

        var allDetails = _db.myTable.Where(p => p.id == newId).FirstOrDefault();

        return View(allDetails);
    }