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

mwngjboj  于 2022-12-17  发布在  Java
关注(0)|答案(2)|浏览(89)

我正在ASP.NET MVC5 C#应用程序中创建Angular.JS页面,我希望在加载新页面或刷新浏览器页面时从URL中删除#和尾随路径。
例如:www.example.com/calculator#/step2我希望它在页面刷新时回到简单的www.example.com/calculator
我的想法是,我需要它在新页面加载或浏览器页面刷新时从计算器表单的开头重新启动它们,原因是我创建的表单不会在页面刷新之间保存数据,因此它们需要从头重新填充数据。
每当页面被重新加载时,它确实会调用我的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();
    }
}

有没有简单的方法可以做到这一点?我是angulariderjs的新手,所以如果有一个angulariderjs解决方案可以解决这个问题,我也很想听到。

bvjxkvbb

bvjxkvbb1#

我参考了一些有用的评论,写了一个解决问题的方法,就像davcs86说的,哈希后的字符串只能在客户端处理。
像charlietfl建议的那样使用Angular.JS和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: ... }部分来检查Data.terms字段是否已完成,如果该值尚未设置(在浏览器页面刷新重置数据的情况下),则它将使用$location.path('/');发送重定向回根页面,否则,如果Data.terms已设置,则它将加载所请求的页面。

6kkfgxo0

6kkfgxo02#

我也通过jquery解决了这个问题,我的链接是[http://localhost:53209/HarcamaIslemleri?toastMesaj=true],我想在刷新页面时将其设置为[http://localhost:53209/HarcamaIslemleri?toastMesaj=false]。
我在jquery中写了这个代码块,它对我很有效,我希望这个答案会有用

$(document).ready(function () {  
       
         const queryString = window.location.search;
         if (queryString) {
             const urlParams = new URLSearchParams(queryString);
             const stepValue = urlParams.get('toastMesaj');
             if (stepValue == "true") {
                 toastr.warning('Successfully Added!');
                 window.history.replaceState(null, null, '?toastMesaj=' + false);
             }
  
         }
});

相关问题