Asp.net mvc 如何在多个视图中选择表行

Asp.net mvc 如何在多个视图中选择表行,asp.net-mvc,angularjs,razor,Asp.net Mvc,Angularjs,Razor,在我的布局页面的左侧有一个表,其中包含作业名称列表。右侧是视图填充的位置。我的每个视图都有相同的表。ChangeOrders.cshtml、PurchaseOrders.cshtml等。。。现在,当您在ChangeOrders视图上时,在您从job Names(作业名称)表中选择作业之前,不会显示任何内容。此时将显示具有该作业ID的变更单。但是,当我切换到另一个视图时,作业选择会自动清除。我需要该作业保持选中状态,直到我选择另一个作业或按下“清除过滤器”按钮 布局页面上的作业表 <tabl

在我的布局页面的左侧有一个表,其中包含作业名称列表。右侧是视图填充的位置。我的每个视图都有相同的表。ChangeOrders.cshtml、PurchaseOrders.cshtml等。。。现在,当您在ChangeOrders视图上时,在您从job Names(作业名称)表中选择作业之前,不会显示任何内容。此时将显示具有该作业ID的变更单。但是,当我切换到另一个视图时,作业选择会自动清除。我需要该作业保持选中状态,直到我选择另一个作业或按下“清除过滤器”按钮

布局页面上的作业表

<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存储

  • 本地存储
    • 这可以是非常灵活的,它可以跨会话和选项卡持久化。但是,如果您希望它清除,则必须手动清除它,因此根据您存储的内容,它可能被认为是不安全的
  • 会话存储
    • 会话存储
      与本地存储几乎相同,只是会话结束后不保存。因此,它在新窗口上不可用
如果您在该选项中有兴趣,则这些对象不难单独使用。但是如果你发现它更简单,你可以使用它,它将对象包装成一个有角度的工厂

2)Cookies

而不是一个有效的存储选项。如果您希望共享服务器端的数据并希望在头中发送数据,那么Cookie就是真正的意思

Angular具有处理Cookie的模块您必须从AngularJS网站下载
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');
});