Angular ui-router给MVC控制器的隐藏参数
本文关键字:隐藏 参数 控制器 MVC ui-router Angular | 更新日期: 2023-09-27 18:12:15
我为我的一个标签设置了以下ui-router状态:
$stateProvider
.state('systems', {
url: '/Tabs/System',
templateUrl: function ($stateParams) {
return ('/Tabs/Systems/IndexNoLayout') + (typeof $stateParams.CustomerName === 'undefined' ? '' : '/' + $stateParams.CustomerName);
},
params: { CustomerName: '' },
controller: 'systemCtrl'
});
标签的链接:
<a ui-sref="systems({CustomerName: 'dummyCustomer'})">
Save state
</a>
和一个带有可选参数的MVC控制器:
public ActionResult IndexNoLayout(string CustomerName){...}
这个参数然后在使用Razor的MVC视图中使用。上面的代码可以工作。但是我希望我的templateUrl定义如下:
templateUrl: '/Tabs/Systems/IndexNoLayout'
这样我就可以很容易地删除$stateChangeStart上的$templateCache:
$templateCache.remove(fromState.templateUrl);
有可能吗?
这篇文章帮我解决了这个问题。
因此我的解决方案:
$stateProvider
.state('systems', {
url: '/Tabs/System',
templateUrl:'/Tabs/Systems/IndexNoLayout',
params: { CustomerName: '' },
controller: 'systemCtrl'
});
在我的$stateChangeStart:
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
if (toState.name == "systems") {
toState.templateUrl = ('/Tabs/Systems/IndexNoLayout' + (typeof toParams.CustomerName === 'undefined' ? '' : '/' + toParams.CustomerName));
}
$templateCache.remove(toState.templateUrl); ...});