ASP.NET Core中使用默認(rèn)MVC路由的配置
ASP.NET Core里Route這塊的改動(dòng)不大,只是一些用法上有了調(diào)整,提供了一些更加簡潔的語法。
而對于自定義路由的支持當(dāng)然也是沒有問題的,這個(gè)功能應(yīng)該是從MVC1.0版本就已經(jīng)有這個(gè)功能。
先看看ASP.NET Core里面實(shí)現(xiàn)默認(rèn)MVC路由的配置方式
通常情況下,在使用MVC項(xiàng)目的時(shí)候,默認(rèn)的路由就足夠了,就是常見的通過Controller和Action獲取具體的方法的方式。
從一個(gè)最基本的項(xiàng)目開始,執(zhí)行以下步驟,就可以使得項(xiàng)目支持MVC路由
1.創(chuàng)建一個(gè)空白的ASP.NET Core(Empty) Web項(xiàng)目
2.打開project.json,在”dependencies”節(jié)點(diǎn)下增加如下依賴項(xiàng)目
"Microsoft.AspNetCore.Mvc": "1.0.0"
保存之后,項(xiàng)目會(huì)自動(dòng)restore packages到本地
3.加入默認(rèn)MVC路由配置
打開Startup.cs文件
在ConfigureServices方法,加入如下代碼
services.AddMvc();
這個(gè)擴(kuò)展方法把Mvc的一些服務(wù)都注入到容器中
在Configure方法,注釋最后兜底的那個(gè)“hello world”語句,這個(gè)語句的作用是不管什么請求都它來負(fù)責(zé)。
然后在Configure方法加入如下代碼
app.UseMvcWithDefaultRoute();
這個(gè)擴(kuò)展方法實(shí)際上使用了一個(gè)Middleware,默認(rèn)的Url template跟之前MVC版本的一致,上述代碼等同于以下效果
app.UseMvc(routes => { routes.MapRoute( name: "Default", template: "{controller}/{action}/{id?}", defaults: new {controller = "Home", action = "Index"} ); });
最終的Startup.cs代碼如下
public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } //app.Run(async (context) => //{ // await context.Response.WriteAsync("Hello World!"); //}); app.UseMvcWithDefaultRoute(); } }
4.到此配置已經(jīng)完成,但是運(yùn)行站點(diǎn)直接顯示404,沒顯示Hello world說明已經(jīng)生效了,只是Empty的項(xiàng)目沒有Controller,那么定義一個(gè)Controller吧。
手動(dòng)在項(xiàng)目根目錄創(chuàng)建Controllers目錄,然后新建一個(gè)Controller,名字為HomeController,然后直接運(yùn)行網(wǎng)站(應(yīng)該刷新一下就可以了)。
站點(diǎn)繼續(xù)提示錯(cuò)誤,但不是404了,是提示找不到Index這個(gè)View。
繼續(xù)在項(xiàng)目根目錄創(chuàng)建Views目錄,然后在Views目錄下新建一個(gè)Home目錄,在Home目錄新建一個(gè)Index.cshtml,填寫一些內(nèi)容,再次刷新就可以了。
當(dāng)然這是最基本的配置,比如要進(jìn)一步支持在cshtml里面實(shí)現(xiàn)智能感知,支持靜態(tài)文件路由等還得加入更多的依賴和配置。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
.net設(shè)計(jì)模式之裝飾模式(Decorator)
這篇文章主要為大家詳細(xì)介紹了.net設(shè)計(jì)模式之裝飾模式Decorator,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06asp.net下數(shù)據(jù)庫操作優(yōu)化一例
數(shù)據(jù)庫升級(jí),需要對幾個(gè)表進(jìn)行一些數(shù)據(jù)轉(zhuǎn)換,具體是這樣:針對每一個(gè) Item,從 orders 表里查出 Shop_Id,并把此 Id 賦值給 items 和 skus 中的 Shop_Id。2010-11-11asp.net c#采集需要登錄頁面的實(shí)現(xiàn)原理及代碼
當(dāng)我們采集頁面的時(shí)候,如果被采集的網(wǎng)站需要登錄才能采集,原理搞清楚了,就好辦了,我們所要做的僅僅是在采集的時(shí)候(或者說HttpWebRequest提交數(shù)據(jù)的時(shí)候),將Cookie信息放入Http請求頭里面就可以了,感興趣的朋友可以了解下,或許對你有所幫助2013-02-02詳細(xì)說明asp.net中datareader 和 dataset 的區(qū)別
asp.net中datareader 和 dataset的區(qū)別主要是在獲取數(shù)據(jù)的機(jī)制和獲取數(shù)據(jù)的方式方面,下面我們來看教程2013-08-08關(guān)于兩個(gè)自定義控件的取值問題及接口的應(yīng)用
一個(gè).aspx的頁面中,用到了兩個(gè)用戶控件,其中想做的到A控件有一個(gè)按鈕,點(diǎn)擊的時(shí)候獲取到B控件中的一個(gè)textbox的值想必大家會(huì)使用findcontrol獲取控件吧,而在生成的時(shí)候名字是不確定的,那么如何書寫呢?接下來為您提供詳細(xì)的解決方法,感興趣的朋友可以了解下啊2013-01-01asp.net(c#)Enterprise Library 3.0 下載
asp.net(c#)Enterprise Library 3.0 下載...2007-04-04asp.net 頁面延時(shí)五秒,跳轉(zhuǎn)到另外的頁面
asp.net 頁面延時(shí)五秒,跳轉(zhuǎn)到另外的頁面的實(shí)現(xiàn)代碼。2009-12-12