1. 程式人生 > >Asp.net core 2.0.1 Razor 的使用學習筆記(一)

Asp.net core 2.0.1 Razor 的使用學習筆記(一)

提升 完成後 安全 provider razor 官方 one text .cn

環境:vs2017 版本:15.5.6

這裏說明下, Razor頁面模式跟mvc出現了嚴重的不同。正如微軟官方說的一樣“Razor 頁面是 ASP.NET Core MVC 的一個新功能,它可以使基於頁面的編碼方式更簡單高效。”

但就代碼說沒有什麽不同幾乎完全一樣,但是存放的位置卻有了根本的區別。個人研究分析的結果是:Razor頁面模式其實是把mvc中的控制器化整為零了,即原來控制器中的操作代碼被分布放到了各個頁面的.cshtml.cs文件中了。這樣一來由原來mvc中文件按類型分類變成了按功能分類,這樣的好處就是每個頁面形成了模塊化,這個頁面涉及的數據都在這裏,便於維護,不用控制器、模型、視圖來回切換了,給我的感覺多少有些像原來的web窗體的頁面結構,當然化整為零後每個頁面的操作不用全部去讀取控制器,可能在性能有提升。

一、新建項目

1、文件》新建》項目》Visual c#》.NET Core》ASP.NET Core Web應用程序(“.NET Framework” 4.6.1)

2、依次選擇“.NET Core”》“ASP.NET Core 2.0”,然後選擇“Web 應用程序”(身份驗證類型:個人用戶賬戶)。

二、修改數據庫連接。引自“張不水”兄的研究成果。

1、相對路徑:

修改appsettings.json文件中的"ConnectionStrings"(第3行)

"DefaultConnection": "Data Source=(localdb)\\mssqllocaldb;AttachDbFilename=%CONTENTROOTPATH%\\App_Data\\aspnet123.mdf;Integrated Security=True;Connect Timeout=30;MultipleActiveResultSets=true”

需註意的是:AttachDbFilename=%CONTENTROOTPATH%\\App_Data\\aspnet123.mdf;

使用 ContentRootPath 是將文件放置在項目目錄下而不是wwwroot目錄下,這樣更安全。

ContentRootPath 用於包含應用程序文件。
WebRootPath 用於包含Web服務性的內容文件。
實際使用區別如下:

ContentRoot: C:\MyApp\
WebRoot: C:\MyApp\wwwroot\

2、修改Startup.cs

修改後的代碼:

①修改Startup方法為如下

public Startup(IConfiguration configuration,IHostingEnvironment env)
        {
            Configuration = configuration;
//新添加 _env = env; }

②添加public IHostingEnvironment _env { get; }

③修改ConfigureServices方法

註銷掉原有的services.AddDbContext

//添加修改()聲明變量conn並做相應處理
string conn = Configuration.GetConnectionString("DefaultConnection");
if (conn.Contains("%CONTENTROOTPATH%"))
{
conn = conn.Replace("%CONTENTROOTPATH%", _env.ContentRootPath);
}
//修改默認的連接服務為conn
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(conn));

修改完成後的代碼:

技術分享圖片
public class Startup
    {
        public Startup(IConfiguration configuration, IHostingEnvironment env)
        {
            Configuration = configuration;
            //新添加
            _env = env;
        }

        public IConfiguration Configuration { get; }
        //新添加
        public IHostingEnvironment _env { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            //services.AddDbContext<ApplicationDbContext>(options =>
            //    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

            //添加修改()聲明變量conn並做相應處理
            string conn = Configuration.GetConnectionString("DefaultConnection");
            if (conn.Contains("%CONTENTROOTPATH%"))
            {
                conn = conn.Replace("%CONTENTROOTPATH%", _env.ContentRootPath);
            }
            //修改默認的連接服務為conn
            services.AddDbContext<ApplicationDbContext>(options =>
                      options.UseSqlServer(conn));


            services.AddIdentity<ApplicationUser, IdentityRole>()
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders();

            // Add application services.
            services.AddTransient<IEmailSender, EmailSender>();

            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)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();

            app.UseAuthentication();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }
    }
View Code

3、手動在項目中添加“App_data”文件夾,並復制粘貼一個標準的內容為空的.mdf文件。

為方便大家學習我這裏為大家提供了示例數據庫。

Asp.net core 2.0.1 Razor 的使用學習筆記(一)