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小時內與您取得聯系。