为什么浏览器跟随由pushState()更新的URL?

时间:2018-10-19 10:43:28

标签: javascript c# asp.net asp.net-mvc

我已经制作了一个简单的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定义一个路由?这是正确的方法吗?

1 个答案:

答案 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