我知道 - 你要说的第一件事是"使用推荐人!"
但那是错误的答案,我会解释原因。
假设您在一个页面上,说"员工",它有一个搜索。名称的搜索字段在提交时生成员工表。在该表中,Employee Name是一个可点击的对象,在本例中是一个超链接。该链接转到“员工详细信息”页面。在那个页面上,实际上并没有什么,因为该页面实际上从子页面加载了一堆Angular数据。
所以,问题是: 在员工上,单击链接:
http://localhost/EmployeeData#/details/cc30e1f8-b21c-4384-9710-e927686c925c
该链接将您带到EmployeeData控制器和索引视图。索引视图加载details.html,这是一个充满数据的角度幸福。它很棒。
但是在索引视图中,有一小段代码可以告诉详细信息显示在哪里,并且有一个面包屑。因此,在Index ViewResult(EmployeeData / Index.aspx)中,我希望能够从链接中获取GUID,但是当我使用引荐来源时,它只是告诉我&# 34;您来自员工搜索"。
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只返回http://localhost/Employee
。由于角度页面中发生的所有真实数据事件,并且实际上并未在索引视图中,因此curUrl只有&#34; EmployeeData&#34 ;.
所以,我需要做的是获取带有ID的完整URL,并将该ID传递给我的&#34; CreateBreadCrumbDisplay&#34;方法
思想?
答案 0 :(得分:1)
我认为可能的解决方案是使用$routeParams
抓取网址参数并将其传递给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);
});
从某处链接
<a href="#/link/cc30e1f8-b21c-4384-9710-e927686c925c">foo</a>
最后是控制台输出:
{ GUID: "cc30e1f8-b21c-4384-9710-e927686c925c" }
答案 1 :(得分:0)
只要我明白,你可以使用$ location服务, $ location.absUrl(); 你可以通过许多其他方式成功实现这一点,甚至可以将你的url作为参数传递给action方法提交。