动态标签页在MVC应用中的实现

Remove Tab

Add a new Tab:

Add Tab

在现代Web开发中,动态内容的展示是一个重要的需求。AngularJS作为一个强大的前端框架,提供了丰富的组件和指令来帮助开发者实现这一需求。本文将介绍如何在AngularJS中动态创建标签页,并从数据库获取动态数据来填充这些标签页。

首先,需要创建一个MVC应用程序。打开Visual Studio,然后点击文件->新建->项目,并为项目命名。接下来,将从NuGet包中安装AngularJS。安装完成后,会看到项目中添加了一些新的CSS文件和脚本。现在,已经完成了设置,接下来将进入编码部分。

接下来,将创建一个新的控制器。在本文的例子中,创建了一个名为“HomeController”的控制器。在控制器中,将调用一个模型操作,该操作将返回一些动态数据。以下是控制器的代码示例: public class HomeController : Controller { public ActionResult Index() { return View(); } public JsonResult TabData() { Test t = new Test(); var myList = t.GetData(); return Json(myList, JsonRequestBehavior.AllowGet); } } 在这段代码中,有一个ActionResult和一个JsonResult,将在AngularJS服务中调用它们。如所见,创建了一个名为Test的模型的实例,接下来将创建模型类。

创建了一个名为Test的模型类。在这个类中,使用for循环动态创建了一些数据,并将这些值分配给一个列表。以下是模型类的代码示例: namespace AsyncActions.Models { public class Test { public List GetData() { try { List cst = new List(); for (int i = 0; i < 15; i++) { Customer c = new Customer(); c.CustomerID = i; c.CustomerCode = "CST" + i; cst.Add(c); } return cst; } catch (Exception) { throw new NotImplementedException(); } } } public class Customer { public int CustomerID { get; set; } public string CustomerCode { get; set; } } } 如所见,创建了一个Customer类型的列表。接下来,需要创建一个视图。

右键单击控制器,然后单击“添加视图”,这将在视图文件夹中为提供一个新的视图。现在,视图已经准备好了,接下来可以在视图中编写一些代码来填充标签页。

在视图中,声明了AngularJS控制器和应用程序名称,如下所示: ng-controller="tabController" class="sample tabsdemoDynamicTabs" layout="column" ng-cloak="" ng-app="tab" 现在,将向视图中添加所需的引用。

接下来,将创建AngularJS应用程序、控制器和服务。以下是添加应用程序、控制器和服务的代码示例: (function() { 'use strict'; var app; (function() { // create app app = angular.module("tab", ['ngMaterial', 'ngMessages', 'material.svgAssetsCache']); // create controller app.controller("tabController", function($scope, tabService) { var serv = tabService.getAll(); serv.then(function(d) { tabController(d.data, $scope); }, function(error) { console.log("Something went wrong, please check after a while"); }) }); // create service app.service("tabService", function($http) { this.getAll = function() { return $http({ url: "/Home/TabData", method: "GET" }); }; }); })(); })(); 如所见,一旦从AngularJS服务(tabService)获取数据到控制器(tabController),就会将数据传递给一个名为tabController的函数。以下是该函数的代码示例: function tabController(data, $scope) { var tabsArray = []; for (var i = 0; i < data.length; i++) { tabsArray.push({ 'title': "Customer ID: " + data[i].CustomerID, 'content': data[i].CustomerCode + "The data you are seeing here is for the customer with the CustomerCode " + data[i].CustomerCode }); } var tabs = tabsArray, selected = null, previous = null; $scope.tabs = tabs; $scope.selectedIndex = 0; $scope.$watch('selectedIndex', function(current, old) { previous = selected; selected = tabs[current]; }); $scope.addTab = function(title, view) { view = view || title + "Content View"; tabs.push({ title: title, content: view, disabled: false }); }; $scope.removeTab = function(tab) { var index = tabs.indexOf(tab); tabs.splice(index, 1); }; } 至此,已经在AngularJS中动态创建了标签页。现在,让看看输出结果吧。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485