现在我们将转向客户端,并添加一个可以从管理控制器消费数据的页面。该页面将允许用户通过向控制器发送创建交互式、快速动态网页应用的网页开发技术请求来创建、编辑或删除产品。现在我们转入客户端,并添加一个能够使用从管理控制器而来的数据的页面。通过给控制器发送创建交互式、快速动态网页应用的网页开发技术请求的方式,该页面将允许用户创建、编辑,或删除产品在解决方案资源管理器中,展开控制器文件夹并打开名为HomeController.cs的文件。该文件包含一个手动音量调节控制器。添加名为管理:的方法在"解决方案资源管理器"中,展开控制器文件夹,并打开名为HomeController.cs的文件。这个文件是一个手动音量调节控制器。添加一个名称为管理的方法:复制代码代码如下:公共操作结果Admin(){字符串APi uri=URl .HttpRouteUrl('DefaultApi,new { controller='admin ',});视图包ApiUrl=新的Uri(请求. Url,ApiURi()。绝对正确。ToString();返回视图();HttpRouteUrl方法创建了网络应用编程接口的URI,我们将其存储在视图包中以备后用HttpRouteUrl .方法创建了发送给网络应用编程接口的URI,我们随后把它存储在视图包(查看包)中接下来,将文本光标放在管理操作方法中,然后右键单击并选择添加视图。这将显示"添加视图"对话框。下一步,把文本光标定位到管理动作方法的内部,然后右击,并选择"添加视图"。这会带出"添加视图"对话框(见图2-20)。
图2-20.添加视图在"添加视图"对话框中,将视图命名为"管理"。选中标记为"创建强类型视图"的复选框。在"模型类别"下,选择"产品(产品存储)"。模型)。将所有其他选项保留为默认值。在"添加视图"对话框中,将此视图命名为管理员。选中标签为"创建强类型视图"的复选框。在"模型类"下面,选择"产品(产品存储。车型)" .保留所有其它选项为其默认值(如图2-21)。
图2-21."添加视图"对话框的设置单击"添加"会在"视图/主页"下添加一个名为Admin.cshtml的文件。打开此文件并添加以下超文本标记语言.这个超文本标记语言定义了页面的结构,但是还没有连接任何功能。点击"添加",会把一个名称为Admin.cshtml的文件添加到视图/主页下。打开这个文件,并添加以下超文本标记语言。这个超文本标记语言定义了页面的结构,但尚未连接功能。复制代码代码如下: div class=' content ' div class=' float-left ' ul ID=' Update-products ' Li div class=' Item '产品ID/div span/span/div class=' Item '名称/div输入类型=' text '/div class=' Item '价格($)/div输入类型=' text '/div div输入类型=' button '值=' Update '/输入类型=' button '值='ValidationSummary(true)字段集legendContact/legend @ Html .editorformmodel(p)输入类型='提交'值='保存'/p/字段集/表单/div/div创建到管理页面的链接创建到管理页面的链接在解决方案资源管理器中,展开"视图"文件夹,然后展开"共享"文件夹。打开名为_Layout.cshtml的文件。找到id='菜单'的保险商实验所元素,以及管理视图:的操作链接在"解决方案资源管理器"中,展开视图文件夹,然后展开共享的文件夹。打开名称为_Layout.cshtml的文件。定位到id='菜单'的保险商实验所元素,和一个用于管理视图的动作链接:复制代码代码如下: li@Html .操作链接(‘管理’、‘管理’、‘主页’)/Li在示例项目中,我做了一些其他修饰性的更改,例如将字符串"您的徽标放在这里"替换掉。这些不会影响应用程序的功能。您可以下载项目并比较文件。在这个例子项目中,我做了几个其它装饰性的修改,如替换了字符串"你的标志在这里(这是你的徽标)" .这些不会影响此应用程序的功能。你可以下载这个项目并比较此文件运行应用程序,然后单击主页顶部的"管理"链接。管理页面应该如下所示:运行该应用程序,并点击出现在首页顶部的这个"管理员"链接管理员页面看上去应当像这样(见图2-22):
图2-22.管理页面现在,这一页什么也做不了。在下一节中,我们将使用淘汰赛。射流研究…来创建一个动态用户界面.此刻,这个页面不做任何事情。在下一小节中,我们将使用淘汰赛来创建一个动态用户界面。添加授权添加授权访问该网站的任何人都可以访问管理页面。让我们对此进行更改,以限制管理员的权限。管理此刻可以被任何访问网站的人所访问。让我们做点修改,把许可限制到管理员首先添加一个"管理员"角色和一个管理员用户。在解决方案资源管理器中,展开筛选器文件夹,并打开名为initializesimplemembershippettribute。铯的文件。找到SimpleMembershipInitializer构造函数。呼叫网络安全后。初始化数据库连接,添加以下代码:先从添加"管理员(管理员)"角色和管理人用户开始。在"解决方案资源管理器"中,展开过滤文件夹,并打开名称为initializesimplemembershippettribute。铯的文件,定位到SimpleMembershipInitializer构造器。在对网络安全。初始化数据库连接的调用之后,添加以下代码:复制代码代码如下:常量字符串管理员角色='管理员常量字符串adminName=' Administratorif(!角色。角色存在(管理员角色)){角色创建角色(AdminRole);} if(!网络安全。用户存在(管理员名称)){网络安全CreateUserAndAccount(adminName,' password ');角色AddUserToRole(adminName,adminRole);}这是添加"管理员"角色并为该角色创建用户的快捷方式。这是添加"管理员"角色并为该角色创建用户的一种快速而直接的方式在解决方案资源管理器中,展开控制器文件夹并打开家庭控制器文件。将授权属性添加到管理方法中。在"解决方案资源管理器"中,展开控制器文件夹,并打开HomeController.cs文件。把授权(授权)注解属性添加到管理方法上:复制代码代码如下:[授权(角色='管理员')]公共操作结果管理(){返回视图();}打开AdminController.cs文件,将批准属性添加到整个管理控制器类中。打开AdminController.cs文件,并把批准注解属性添加到整个管理控制器类上:[授权(角色='管理员')]公共类管理控制器: API控制器{//.手动音量调节和网络应用编程接口都在不同的名称空间中定义了批准属性MVC .使用系统网络。Mvc.AuthorizeAttribute,而网络应用编程接口使用系统。网络。Http。authorizeattribute。手动音量调节和网络应用编程接口都定义了批准注解属性,但位于不同的命名空间MVC。使用的是系统网络。Mvc.AuthorizeAttribute,而网络应用编程接口使用系统网络。Http.AuthorizeAttribute。现在只有管理员可以查看管理页面。另外,如果您向管理控制器发送一个超文本传送协议请求,该请求必须包含一个身份验证饼干.如果没有,服务器会发送一个HTTP 401(未授权)响应。您可以通过向http://本地主机:端口/应用编程接口/管理发送得到请求在游手好闲的人中看到这一点。现在,只有管理员才可以查看管理页面。而且,如果对管理控制器发送一个超文本传送协议请求,该请求必须包含一个认证饼干。否则,服务器会发送一个HTTP 401(未授权)响应。在游手好闲的人中,通过发送一个http://localhost:port端口端口/api/admin的得到请求,便会看到这种情况。