我已经制作了一个简单的ASP.NET MVC应用程序,该应用程序使用AJAX更新页面内容,并在按钮上的click事件上使用history.pushState()更新URL。这是代码
$("#btn").click(function (event) {
var Response = CallAPI();
var PageTitle = $(document).find("title").text();
var StateObj = {
FirstName: Response.FirstName
};
var FirstNameUrl = "/" + Response.FirstName;
history.pushState( StateObj, PageTitle + Response.FirstName, "/Users" + FirstNameUrl );
event.preventDefault();
});
开头的网址是http://localhost:64061/Users
,在ajax请求之后,该网址已更新为http://localhost:64061/Users/UserName
,但是此网址不存在,这是问题所在,因为我刷新时说文档不存在存在,但是我使用了event.preventDefaults()
。
我知道这是因为该URL不会映射到任何现有路由,但这是否意味着我也必须为此URL定义一个路由?这是正确的方法吗?
答案 0 :(得分:0)
history.pushState
只是前端工作。不管文档是否真的存在。负责后端。
您可以使用正则表达式提供全面的路由,例如:/\/Users\/\w+$/
对于ASP.NET MVC显式来说,它应该类似于/Users/{userName}
。
https://docs.microsoft.com/de-de/aspnet/mvc/overview/older-versions-1/controllers-and-routing/asp-net-mvc-routing-overview-cs