Javascript 如何从ASP.NET控制器中的url中删除哈希参数,以便返回Angular.JS应用程序中的根uri?

Javascript 如何从ASP.NET控制器中的url中删除哈希参数,以便返回Angular.JS应用程序中的根uri?,javascript,c#,asp.net,angularjs,asp.net-mvc,Javascript,C#,Asp.net,Angularjs,Asp.net Mvc,我正在ASP.NET MVC5 C#应用程序中创建Angular.JS页面,我希望在新页面加载或浏览器页面刷新时从URL中删除#和尾随路径 例如:www.example.com/calculator#/step2 我的想法是,我需要它在新页面加载或浏览器页面刷新时,在计算器表单的开头重新启动它们。原因是我创建的表单不会在页面刷新之间保留数据,因此他们需要从一开始就重新填充数据 每当重新加载页面时,它都会调用我的ASP.NET计算器控制器,所以我的想法是服务器可以重置URL路径 在我的ASP.NE

我正在ASP.NET MVC5 C#应用程序中创建Angular.JS页面,我希望在新页面加载或浏览器页面刷新时从URL中删除#和尾随路径

例如:
www.example.com/calculator#/step2

我的想法是,我需要它在新页面加载或浏览器页面刷新时,在计算器表单的开头重新启动它们。原因是我创建的表单不会在页面刷新之间保留数据,因此他们需要从一开始就重新填充数据

每当重新加载页面时,它都会调用我的ASP.NET计算器控制器,所以我的想法是服务器可以重置URL路径

在我的ASP.NET计算器控制器中,我有:

public class CalculatorController : Controller
{
    // GET: Calculator
    public ActionResult Index()
    {
        // check for # sign and remove it and trailing path from URL.
        // or simply make the path "/calculator" every time.
        return View();
    }
}

有没有一个简单的方法可以做到这一点?我是Angular.JS的新手,因此如果有Angular.JS解决方案,我也很乐意听到。

根据发布的有用评论的建议,我已经为我的问题编写了一个解决方案。正如davcs86所说,哈希后的字符串只能在客户端处理

使用Angular.JS和charlietfl建议的
resolve
,这就是我的想法:

var myApp = angular.module("app-calculator", ["calculatorControls", "ngRoute"])
    .config(function ($routeProvider) {

        $routeProvider.when("/", {
            controller: "termsController",
            controllerAs: "vm",
            templateUrl: "/content/templates/termsView.html"
        });

        $routeProvider.when("/condition", {
            controller: "conditionController",
            controllerAs: "vm",
            templateUrl: "/content/templates/conditionView.html",
            resolve: {
                validate: function ($location, Data) {
                    if (!Data.terms) {
                        $location.path('/');
                    }
                }
            }
        });

        $routeProvider.otherwise({ redirectTo: "/" });

    });

基本上,我使用
resolve:{validate:…}
部分来检查我的
数据.terms
字段是否已完成。如果未设置该值(在浏览器页面刷新重置数据的情况下),则它将使用
$location.path('/')将重定向发送回根页面。否则,如果Data.terms已设置,则它将加载请求的页面。

请求页面时,URL中哈希后面的字符串不会发送到服务器,因此不能使用类似的重定向规则。这只是客户端,你应该用angular来处理。在路由器中使用解析来检查服务,你可以在其中跟踪步骤。如果在服务中未完成步骤1,请重定向到该步骤。也可以考虑使用本地存储,所以用户不必从头再来,谢谢你的评论@ davc86@ @查理!我将研究localStorage,这听起来可能比我想象的更好。您是否碰巧有路由器中的解析器示例,如果某个步骤未完成,它可能会重定向?请阅读
resolve
,了解您正在使用的任何路由器。一个简单的带重定向的条件解析并不困难