Asp.net mvc 如何在多个视图中选择表行
在我的布局页面的左侧有一个表,其中包含作业名称列表。右侧是视图填充的位置。我的每个视图都有相同的表。ChangeOrders.cshtml、PurchaseOrders.cshtml等。。。现在,当您在ChangeOrders视图上时,在您从job Names(作业名称)表中选择作业之前,不会显示任何内容。此时将显示具有该作业ID的变更单。但是,当我切换到另一个视图时,作业选择会自动清除。我需要该作业保持选中状态,直到我选择另一个作业或按下“清除过滤器”按钮 布局页面上的作业表Asp.net mvc 如何在多个视图中选择表行,asp.net-mvc,angularjs,razor,Asp.net Mvc,Angularjs,Razor,在我的布局页面的左侧有一个表,其中包含作业名称列表。右侧是视图填充的位置。我的每个视图都有相同的表。ChangeOrders.cshtml、PurchaseOrders.cshtml等。。。现在,当您在ChangeOrders视图上时,在您从job Names(作业名称)表中选择作业之前,不会显示任何内容。此时将显示具有该作业ID的变更单。但是,当我切换到另一个视图时,作业选择会自动清除。我需要该作业保持选中状态,直到我选择另一个作业或按下“清除过滤器”按钮 布局页面上的作业表 <tabl
<table class=" table table-bordred table-striped table-hover" ng-table=" tableparams" show-filter="true" ng-scroll-viewport style="height:200px;">
<tr ng-repeat="job in jobArray" class="pointer" ng-click="selectJob(job)">
<td data-title="'Job Name'" sortable="'JobName'" filter="{ 'JobName': 'text' }">{{job.JobName}}</td>
</tr>
</table>
更新
我正在使用ngStorage进行会话存储
我试图实现它,但我不知道如何在$rootScope中使用它。我还需要添加jquery函数
$scope.selectJob = function (job) {
$rootScope.selectedJob = $sessionStorage.$default(job);
console.log($rootScope.selectedJob);
};
$scope.selectedJob = $scope.selectedJob = function () {
return $rootScope.selectedJob;
};
$('#myTable').on('click', ' tbody tr', function (event) {
$(this).addClass('highlight').siblings().removeClass('highlight');
});
问题摘要
如前所述,$rootScope
正在清除,因为您当前的
应用程序设置不是一个AngularJS
单页应用程序。它是
可以理解的是,此时您无法将其关闭,这是可以理解的
好的,你的应用程序仍然是一个很好的角度转换
为了使数据在视图间持久化,您需要将数据保存在某种形式的客户端存储中,然后在控制器加载并填充值时检查值
几个存储选项 1)HTML5存储 。有两种类型的
html5
web存储
- 本地存储
- 这可以是非常灵活的,它可以跨会话和选项卡持久化。但是,如果您希望它清除,则必须手动清除它,因此根据您存储的内容,它可能被认为是不安全的
- 会话存储
与本地存储几乎相同,只是会话结束后不保存。因此,它在新窗口上不可用会话存储
angular cookies
,并将其包含在使用ngCookies中
角度cookie可以通过两种方式实现
(),它是$cookie
对象的基本包装。并设置命名值李>document.cookie
()具有相同的基本功能,但使用$cookieStore
格式(键、值)
ngRoute
或ui路由器运行单页应用程序?如果您不是,则$rootScope
将不会在视图更改中保持不变。如果您绝对无法运行SPA,您可以将该值保存到cookie
或session
值。这是MVC webapi应用程序,应该是SPA,对吗?这不是视图显示在@RenderBody()中的原因吗。我只对cshtml中的某些局部视图使用ngRoute。我该怎么办?它让你了解AngularJS水疗中心是如何建立的。基本上,如果你对运行完整的SPA不感兴趣,你必须使用浏览器(会话/cookie)保存你的值,然后让控制器在启动时检查值。我希望我可以在这一点上重新开始,但我需要尽快启动并运行它。你能给我一些关于保存会话/cookie的链接吗。或者我需要提交一个新的问题吗。非常感谢。我已经更新了我的帖子,以获得有关在$rootScope和jquery中使用sessionStorage的帮助。谢谢
//Sync Table Selections
$scope.selectJob = function (job) {
$rootScope.selectedJob = job;
};
$scope.selectJob = function (job) {
$rootScope.selectedJob = $sessionStorage.$default(job);
console.log($rootScope.selectedJob);
};
$scope.selectedJob = $scope.selectedJob = function () {
return $rootScope.selectedJob;
};
$('#myTable').on('click', ' tbody tr', function (event) {
$(this).addClass('highlight').siblings().removeClass('highlight');
});