ASP.NET MVC从空项目开始定制项目
在上一篇net core的文章中已经讲过如何从零开始搭建WebSocket。
今天聊聊ASP.NET的文件结构,如何用自己的目录结构组织项目里的文件。
如果用Visual Studio(VS)向导或dotnet向导,会为我们生成一套MVC通用框架。不过,对于一个要求更特殊或更小的项目,它可能并不如我们所愿。大小写混合的文件名,有时也不太适合像Linux这样的系统,至少我是这样感觉。目录层次太深也是挺烦恼的事情(夸张的设计,像nodejs里那种把windows地址最大长度都占满是真挺吓人的)。
假设我们只需要简单的页面,简单的模板关系完成一个小小的网站,我们可以如下这般操作。
1)创建空项目,启动文件。
在启动文件里,一般是startup.cs,要有这样一段属于你的启动类。我将向导生产的Program和Startup合并了,这样更合适我们的目标。
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; public class Program
{
public static void Main(string[] args)
{
WebHost.CreateDefaultBuilder()
.UseStartup<Startup>()
.Build().Run();
}
} public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
} public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
} public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();// 使用开发者异常页
}
else
{
app.UseExceptionHandler("/error");// 使用异常处理器
} app.UseStaticFiles();// 静态文件支持
app.UseMvc();
}
}
其实就是添加mvc支持,静态文件支持一下,让wwwroot目录起作用,这个目录名就不研究怎么改名字了,意义不大。
UseMvc,使用Mvc。
异常处理页“/error”就自己随便定制吧,至少你看了本篇之后就会了。
2)添加主页控制器。
添加个文件,home.cs
嗯,这更像是小项目风格!
文件名不限,命名空间不限(有没有也都可以),类名不限,超级爽是吧,自由度非常高。
不用去注册你的路由了,直接使用Route属性,就可以描述你的路径对应的方法。[Route("")]就是根目录。也可以是home/index这样。也可以有多个Route属性描述。
你可以用Controller::Ok方法直接返回HTTP相应代码为200的内容,返回值一定要IActionResult。也可以是字符串返回值。
也可以这样:
然后添加一个razor视图(index.cshtml),这样视图就可以放在项目任意位置了,不用Views目录:
<body>
<div>任意内容</div>
</body>
razor视图依然可以继承_ViewStart.cshtml,Linux下注意大小写。可以添加@{Layout = "_layout.cshtml";}直接使用根目录下的模板。
可以在控制器里给Controller::ViewData添加数据,ViewData["title"] = "一些描述"。 视图里可以直接访问。@ViewData["title"]。
@{
Layout = "_layout.cshtml";
}
<body>
<div>@ViewData["title"]</div>
</body>
模板的知识这里就不讲了,关系不大。
3)运行即可。
这样我们就有了一个非常简洁的MVC项目。
ASP.NET MVC从空项目开始定制项目的更多相关文章
- ASP.NET MVC 此安装不支持该项目类型解决方法
http://www.cnblogs.com/younggun/archive/2011/03/03/1969498.html ASP.NET MVC 此安装不支持该项目类型解决方法 打开 .csp ...
- ASP.NET MVC 5 入门教程 (1) 新建项目
文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-create-project.html 下一节:ASP.NET ...
- ASP.NET MVC模块化开发——动态挂载外部项目
最近在开发一个MVC框架,开发过程中考虑到以后开发依托于框架的项目,为了框架的维护更新升级,代码肯定要和具体的业务工程分割开来,所以需要解决业务工程挂载在框架工程的问题,MVC与传统的ASP.NET不 ...
- asp.net MVC提高开发速度(创建项目模板)
- asp.net MVC 5 Scaffolding多层架构代码生成向导开源项目(邀请你的参与)
Visual Studio.net 2013 asp.net MVC 5 Scaffolding代码生成向导开源项目 提高开发效率,规范代码编写,最好的方式就是使用简单的设计模式(MVC , Repo ...
- 用网站(WebSite而不是WebProject)项目构建ASP.NET MVC网站
从ASP.NET MVC第一个版本开始到现在,创建ASP.NET MVC项目的官方方法只有一个,“文件”->“新建”->“项目”,然后选择ASP.NET MVC X Web应用程序. 这种 ...
- Java进击C#——应用开发之Asp.net MVC
本章简言 上一章笔者讲到关于Asp.NET的知识点.了解Asp.NET基本的知识点之后,我们在来学习关于C#的MVC框架就简单多了.显然本章就是来介绍一下关于Asp.NET MVC.对于MVC的思想笔 ...
- ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器
一.校验 — 表单不是你想提想提就能提 1.1 DataAnnotations(数据注解) 位于 System.ComponentModel.DataAnnotations 命名空间中的特性指定对数据 ...
- ASP.NET MVC 4 Optimization的JS/CSS文件动态合并及压缩
JS/CSS文件的打包合并(Bundling)及压缩(Minification)是指将多个JS或CSS文件打包合并成一个文件,并在网站发布之后进行压缩,从而减少HTTP请求次数,提高网络加载速度和页面 ...
随机推荐
- JDK设计模式之—动态代理
代理模式的特点 代理模式是常用的java设计模式,它的特征是代理类与委托类有同样的接口.代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类. 代理类的对象并不是真正实现服务,而是通过调用委 ...
- [Swift]LeetCode101. 对称二叉树 | Symmetric Tree
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...
- [Swift]LeetCode804. 唯一摩尔斯密码词 | Unique Morse Code Words
International Morse Code defines a standard encoding where each letter is mapped to a series of dots ...
- 认识Junit基本注解@Before、@After、@Test、@BeforeClass、@AfterClass(转)
一.unit中集中基本注解,是必须掌握的. @BeforeClass – 表示在类中的任意public static void方法执行之前执行 @AfterClass – 表示在类中的任意public ...
- linux安装字体方法
1.查看系统中文字体 #fc-list :lang=zh 2.如果提示commont not fount 说明为安装fontconfig 3.安装fontconfig #yum -y install ...
- AspNetCore 使用log4net+IExceptionFilter 记录错误日志
错误日志的好处我就不说了,大家都心里有数,那今天浩子就给大家说一说基本的错误日志吧这次通过log4net记录日志. 原来写过一个关于Nlog的日志框架,传送门为:https://www.cnblogs ...
- 微服务实战(二):使用API Gateway
微服务实战(一):微服务架构的优势与不足 微服务实战(二):使用API Gateway 微服务实战(三):深入微服务架构的进程间通信 微服务实战(四):服务发现的可行方案以及实践案例 微服务实践(五) ...
- [十八]JavaIO之FileReader 和 FileWriter
简介 FileReader FileWriter 都是提供操作文件的便捷类 这两个类的实现非常的简单 原理 回忆下之前的InputStreamReader和OutputStreamWriter Inp ...
- 委托初级篇——lambda表达式的推导
public delegate void ConsoleWriteStr(string name,DateTime now); public delegate int DelegateAdd(int ...
- .NET读取json数据并绑定到对象
需要引用的命名空间: 读取的具体应用: this代表本实体(对象),通过PopulateObject,直接将读取到的json数据与对象进行绑定 Json保存的具体应用: 将对象保存为Json JObj ...