ASP.NET MVC中兩個(gè)配置文件的作用詳解
前言
在新建完一個(gè)MVC項(xiàng)目之后,你會(huì)發(fā)現(xiàn)整個(gè)整個(gè)項(xiàng)目結(jié)構(gòu)中存在有兩個(gè)web.config文件,如下圖所示:

這兩個(gè)配置文件,一個(gè)位于項(xiàng)目的根目錄下面,一個(gè)位于Views文件夾下面,這兩個(gè)配置文件有什么不同呢?
一、根目錄下面的配置文件
跟目錄下面的web.config配置文件代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<!--
有關(guān)如何配置 ASP.NET 應(yīng)用程序的詳細(xì)信息,請(qǐng)?jiān)L問(wèn)
https://go.microsoft.com/fwlink/?LinkId=301880
-->
<configuration>
<appSettings>
<add key="webpages:Version" value="3.0.0.0"/>
<add key="webpages:Enabled" value="false"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.6.1"/>
<httpRuntime targetFramework="4.6.1"/>
</system.web>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f"/>
<bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.2.1" newVersion="4.0.2.1"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-5.2.4.0" newVersion="5.2.4.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.webServer>
<modules>
<remove name="TelemetryCorrelationHttpModule"/>
<add name="TelemetryCorrelationHttpModule"
type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation"
preCondition="integratedMode,managedHandler"/>
</modules>
</system.webServer>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
</configuration>這個(gè)配置文件主要是用來(lái)配置數(shù)據(jù)庫(kù)連接字符串、日志輸出路徑等信息的,比如配置數(shù)據(jù)庫(kù)連接字符串

二、Views文件夾下面的配置文件
Views文件夾下面的配置文件主要是用來(lái)引入一些cshtml頁(yè)面中的命名空間

在上一篇文章中,我們?nèi)绻賑shtml視圖頁(yè)面中使用Student實(shí)體類,需要首先在頁(yè)面中引入Student的命名空間:

如果cshtml頁(yè)面都需要使用到Student類,那么每個(gè)頁(yè)面都需要先引入Student類的命名空間才可以使用,這樣會(huì)有很多重復(fù)的工作,可以把Student類的命名空間添加到Views文件夾下的配置文件中,這樣就不需要每個(gè)頁(yè)面都引入Student類的命名空間了

然后把ViewDataDemo對(duì)應(yīng)的Index視圖修改如下:
@*引入Student的命名空間*@
@*@using MVCStudyDemo.Models; 去掉引入Student命名空間,在web.config文件里面引入 *@
@{
ViewBag.Title = "Index";
// 這里使用的是Razor語(yǔ)法,寫(xiě)的是后臺(tái)C#代碼
// ViewData的Value值是Object類型的,需要進(jìn)行類型轉(zhuǎn)換
// 常規(guī)寫(xiě)法是先在這里進(jìn)行類型轉(zhuǎn)換
var list = ViewData["Data"] as List<Student>;
}
<h2>通過(guò)ViewData向View傳遞數(shù)據(jù)</h2>
<div class="jumbotron">
<div>
<div>
1、傳遞字符串 other:@ViewData["Other"];
</div>
<div>
2、傳遞字符串 name:@ViewData["name"];
</div>
<div>
3、傳遞字符串 age:@ViewData["age"];
</div>
<div>
4、傳遞集合方式一
@foreach (var item in list)
{
<div>
ID:@item.ID??Name:@item.Name??Age:@item.Age??Sex:@item.Sex??Email:@item.Email
</div>
}
</div>
<div>
5、傳遞集合方式二
@foreach (var item in ViewData["Data"] as List<Student>)
{
<div>
ID:@item.ID??Name:@item.Name??Age:@item.Age??Sex:@item.Sex??Email:@item.Email
</div>
}
</div>
</div>
</div>注意:在Index視圖里面去掉命名空間以后,Student實(shí)體類會(huì)標(biāo)紅,不影響程序。

重新生成程序,然后運(yùn)行:

到此這篇關(guān)于ASP.NET MVC中兩個(gè)配置文件的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- ASP.NET core Web中使用appsettings.json配置文件的方法
- ASP.NET Web.config配置文件詳解
- ASP.NET配置文件Web.config用法詳解
- asp.net 讀取配置文件方法
- .NET Core簡(jiǎn)單讀取json配置文件
- asp.net(c#)動(dòng)態(tài)修改webservice的地址和端口(動(dòng)態(tài)修改配置文件)
- .NetCore基礎(chǔ)之讀取配置文件詳解
- ASP.NET Core讀取配置文件
- .net簡(jiǎn)單使用Log4net的方法(多個(gè)日志配置文件)
- .NET Core讀取配置文件方式詳細(xì)總結(jié)
相關(guān)文章
ASP.NET?Core在Linux下為dotnet創(chuàng)建守護(hù)進(jìn)程
本篇主要是怎么樣為我們?cè)贚inux或者macOs中部署的dotnet程序創(chuàng)建一個(gè)守護(hù)進(jìn)程,來(lái)保證我們的程序在異常或者是電腦重啟的時(shí)候仍然能夠正常訪問(wèn)。需要的朋友可以收藏下,方便下次瀏覽觀看2021-12-12
asp.net學(xué)習(xí)中發(fā)現(xiàn)的比較完整的流程
總結(jié)的非常不錯(cuò)的asp.net學(xué)習(xí)資料,方便想自學(xué)asp.net的朋友2008-08-08
初識(shí) ASP.NET Membership 用戶管理
Membership 是用做用戶管理,進(jìn)行身份認(rèn)證使用的。通過(guò)ASP.NET Membership,我們可以創(chuàng)建用戶、刪除用戶和編輯用戶屬性。所以這是一個(gè)實(shí)現(xiàn)登錄相關(guān)控件的底層框架。2016-04-04

