从 link 获取将我带到当前页面的值

Get values from link that brought my to the current page

我知道 - 你要说的第一件事是 "Use the referrer!"

但这是错误的答案,我会解释原因。

假设您在一个页面上,比如说 "Employees",它有一个搜索。名称的搜索字段在提交时会产生 table 名员工。在那个 table 中,员工姓名是一个可点击的对象,在本例中是一个 hyperlink。 link 转到员工详细信息页面。在该页面上,实际上什么都没有,因为该页面实际上从子页面加载了一堆 Angular 数据。

所以,问题: 在 Employees 上,您单击 link:

http://localhost/EmployeeData#/details/cc30e1f8-b21c-4384-9710-e927686c925c

link 会将您带到 EmployeeData 控制器和索引视图。索引视图加载details.html,这是一个充满数据的angular幸福。效果很好。

但回到“索引”视图,有一小段代码告诉详细信息在何处显示,并且有面包屑。所以在 Index ViewResult 中,(EmployeeData/Index.aspx),我希望能够从 link 中提取 GUID...但是当我使用 referrer 时,它只是告诉我 "You came from the Employee Search".

public ViewResult Index()
    {
        var vm = _vmp.GetViewModel<EmployeeDataViewModel>();

        vm.Breadcrumb = CreateBreadCrumbDisplay();

        return View(vm);
    }

public string CreateBreadCrumbDisplay()
    {
        var referrer = (Request.UrlReferrer != null) ? Request.UrlReferrer.AbsoluteUri : string.Empty;

        var curUrl = Request.ServerVariables["SCRIPT_NAME"];
        //do lots of stuff
        return theBreadCrumb;
    }

在这种情况下,CreateBreadCrumbDisplay 只是 returns http://localhost/Employee。 curUrl 只有 "EmployeeData",这要归功于 angular 页面中发生的所有真实数据,而不是实际在索引视图中。

所以,我需要做的是获取带有 ID 的完整 URL,并将该 ID 传递到我的 "CreateBreadCrumbDisplay" 方法中。

想法?

我认为一个可能的解决方案是使用 $routeParams 获取 URL 参数并将其从 Angular.

传递给您的 CreateBreadCrumbDisplay 方法

如果我正确理解您的问题,请继续阅读 $routeParams here 应该可以解决您的问题。


这是它应该如何工作的示例:

首先在 Angular

中配置您的路线
myApp.config(function($routeProvider) {

    $routeProvider.when('/link/:GUID', {
        controller: 'SomeCtrl',
        templateUrl: 'sometemplate.html'
    });
});

然后在你的控制器中

myApp.controller('SomeCtrl', function($scope, $routeParams) {
    console.log($routeParams);
});

Link 从某处

<a href="#/link/cc30e1f8-b21c-4384-9710-e927686c925c">foo</a>

最后是控制台输出:

{ GUID: "cc30e1f8-b21c-4384-9710-e927686c925c" }

据我所知,您可以使用 $location 服务,$location.absUrl(); 而且您可以通过许多其他方式成功实现这一点,甚至通过您的 url 提交时将 action 方法作为参数。