include 指令
通过使用 #include 指令,您可以在服务器执行 ASP 文件之前,把另一个 ASP 文件的内容插入到这个 ASP 文件中。
#include 指令用于创建函数、页眉、页脚或者其他多个页面上需要重复使用的元素等。
如何使用 #include 指令
这里有一个名为 "mypage.asp" 的文件:
<!DOCTYPE html>
<html>
<body>
<h3>Words of Wisdom:</h3>
<p><!--#include file="wisdom.inc"--></p>
<h3>The time is:</h3>
<p><!--#include file="time.inc"--></p>
</body>
</html>
这是 "wisdom.inc" 文件:
"One should never increase, beyond what is necessary,
the number of entities required to explain anything."
这是 "time.inc" 文件:
<%
Response.Write(Time)
%>
如果您在浏览器中查看源代码,它将如下所示:
<!DOCTYPE html>
<html>
<body>
<h3>Words of Wisdom:</h3>
<p>"One should never increase, beyond what is necessary,
the number of entities required to explain anything."</p>
<h3>The time is:</h3>
<p>11:33:42 AM</p>
</body>
</html>
引用文件的语法
如需在 ASP 页面中引用文件,请把 #include 指令放在注释标签中:
<!--#include virtual="somefilename"-->
or
<!--#include file ="somefilename"-->
Virtual 关键词
请使用关键词 virtual 来指示以虚拟目录开始的路径。
如果一个名为 "header.inc" 的文件位于虚拟目录 /html 中,下面这行代码会插入 "header.inc" 文件中的内容:
<!-- #include virtual ="/html/header.inc" -->
File 关键词
请使用关键词 file 来指示一个相对路径。相对路径是以含有引用文件的目录开始的。
如果您在 html 目录中有一个文件,且 "header.inc" 文件位于 html 头部,下面这行代码将在您的文件中插入 "header.inc" 文件中的内容:
<!-- #include file ="headersheader.inc" -->
请注意被引用文件 (headersheader.inc) 的路径是相对于引用文件的。如果包含 #include 声明的文件不在 html 目录中,这个声明就不会生效。
提示和注释
在上面的一部分中,我们已经使用 ".inc" 来作为被被引用文件的文件扩展名。请注意:如果用户尝试直接浏览 INC 文件,这个文件中内容将会被显示出来。如果您的被引用文件中的内容包含机密的信息或者是您不想让任何用户看到的信息,那么最好还是使用 ".asp" 作为扩展名。ASP 文件中的源代码被编译后是不可见的。被引用的文件也可引用其他文件,同时一个 ASP 文件可以对同一个文件引用多次。
重要事项:在脚本执行前,被引用的文件就会被处理和插入。下面的脚本无法执行,这是由于 ASP 会在为变量赋值之前执行 #include 指令:
<%
fname="header.inc"
%>
<!--#include file="<%fname%>"-->
您不能在脚本分隔符之间包含文件引用。下面的脚本无法执行:
<%
For i = 1 To n
<!--#include file="count.inc"-->
Next
%>
但是这段脚本可以执行:
<% For i = 1 to n %>
<!--#include file="count.inc" -->
<% Next %>
wagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无需访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。
Swagger 的优势
实战演示
1、新建一个asp.net core web api项目
2、Nuget安装Swagger
3、为接口及接口中用到的类添加注释
4、右键项目属性(如果项目中有其他库的,都需要参照配置下)生成XML文档,如下图打勾保存
5、Startup配置Swagger,这里用到了一个自定义的扩展类:SwaggerHttpHeaderOperation,这个类里面增加了调试的Http请求header参数,比如Token就可以扩展下,这样在调试时就可以填写该参数,方便调试需要鉴权的接口。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.IO;
using System.Text;
namespace ZQSwaggerDemo
{
public class Startup
{
const string PROJECTNAME = "知擎物联API";
const string VERSION = "v1.0.0";
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
//配置swagger
StringBuilder fDescription = new StringBuilder();
fDescription.Append("<a target='_blank' href='https://www.yyzq.net' class='link'>常州知擎物联科技有限公司 版权所有</a>");
fDescription.Append($"<br>API适用标注说明:");
fDescription.Append($"<br><span style='color:blue'>【NOTOKEN】</span>:无需登录可访问");
services.AddSwaggerGen(c =>
{
c.OperationFilter<SwaggerHttpHeaderOperation>();
c.SwaggerDoc(VERSION, new Microsoft.OpenApi.Models.OpenApiInfo()
{
Title = PROJECTNAME,
Version = VERSION,
Description = ""
}); ;
//加载注释xml文件(这里演示的代码是为了方便一次性加载多个XML文档,省去了一个个XML文件添加的繁琐)
string[] files = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "ZQ*.xml");
foreach (string item in files)
{
c.IncludeXmlComments(item);
}
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseSwagger();//启用中间件服务生成Swagger作为JSON终结点
app.UseSwaggerUI(c =>
{
//启用中间件服务对swagger-ui,指定Swagger JSON终结点
c.SwaggerEndpoint($"/swagger/{VERSION}/swagger.json", PROJECTNAME);
});
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
namespace ZQSwaggerDemo
{
/// <summary>
/// Swagger调试header
/// </summary>
public class SwaggerHttpHeaderOperation : IOperationFilter
{
/// <summary>
///
/// </summary>
/// <param name="operation"></param>
/// <param name="context"></param>
public void Apply(OpenApiOperation operation, OperationFilterContext context)
{
operation.Parameters.Add(new OpenApiParameter()
{
Name = "Token",
In = ParameterLocation.Header,
Required = false,
Schema = new OpenApiSchema { Type = "string" }
});
}
}
}
6、启动项目,访问:http://localhost:45039/swagger/index.html 可以看到之前写的注释都在文档中体现了出来
7、调试接口,对想要调试的接口,展开接口后,点击Try it out按钮,这里我们可以看到之前扩展的Header部分参数(本DEMO仅示范,并未使用,实际项目中还是经常需要自定义一些header参数),填写好参数后,点击Execute调用接口,可以看到成功返回了数据。
欢迎大家交流评论,共同进步,有任何建议或问题随时私聊我
如果本文对您有帮助,请关注,点赞,这是对我继续分享技术最好的鼓励。
有需要本文DEMO的,私聊关键字:SwaggerDEMO
有的服务器控件都必须出现在 <form> 标签中,<form> 标签必须包含 runat="server" 属性。
ASP.NET Web 表单
所有的服务器控件都必须出现在 <form> 标签中,<form> 标签必须包含 runat="server" 属性。runat="server" 属性表明该表单必须在服务器上进行处理。同时也表明了包含在它内部的控件可被服务器脚本访问:
<form runat="server">
...HTML + server controls
</form>
注释:该表单总是被提交到自身页面。如果您指定了一个 action 属性,它会被忽略。如果您省略了 metion 属性,它将会默认设置 method="post"。同时,如果您没有指定 name 和 id 属性,它们会由 ASP.NET 自动分配。
注释:一个 .aspx 页面只能包含一个 <form runat="server"> 控件!
如果您在一个包含不带有 name、method、action 或 id 属性的表单的 .aspx 页面中选择查看源代码,您会看到 ASP.NET 添加这些属性到表单上了,如下所示:
<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">
...some code
</form>
提交表单
表单通常通过点击按钮来提交。ASP.NET 中的 Button 服务器控件的格式如下:
<asp:Button id="id" text="label" OnClick="sub" runat="server" />
id 属性为按钮定义了一个唯一的名称,text 属性为按钮分配了一个标签。onClick 事件句柄规定了一个要执行的已命名的子例程。
在下面的实例中,我们在 .aspx 文件中声明了一个 Button 控件。点击按钮运行改变按钮上文本的子例程:
实例
*请认真填写需求信息,我们会在24小时内与您取得联系。