Javascript 如何从ASP.NET控制器中的url中删除哈希参数,以便返回Angular.JS应用程序中的根uri?
我正在ASP.NET MVC5 C#应用程序中创建Angular.JS页面,我希望在新页面加载或浏览器页面刷新时从URL中删除#和尾随路径 例如: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
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
,了解您正在使用的任何路由器。一个简单的带重定向的条件解析并不困难