ASP.NET MVC5入门指南
1.创建项目
文件 --> 新建 --> 项目
Visual C# --> Web --> ASP.NET Web应用程序
MVC此时处于选中状态,勾选“添加单元测试”(可选择)。
完成以上步骤,基本的项目创建完成,此时点击“F5”可运行项目,如下图所示。(为方便标识,此后用url代替“localhost:20391”)
MVC代表:模型-视图-控制器。
Models:标识该应用程序的数据并使用验证逻辑来强制实施业务规则的数据类
Views :应用程序动态生成HTML所使用的模版文件
Controllers:处理浏览器的请求,取得数据模型,然后指定要响应浏览器请求的视图模版
2. 添加一个控制器类
(右击)Controllers文件夹 --> 添加 --> 控制器
选择“MVC 5 控制器-空”
为控制器添加名称
添加后在Controllers文件夹中会多出文件“MvcMusicStoreController.cs”,并且在文件夹Views下会多出“MvcMusicStore”文件夹
目录结构如下所示:
修改控制器“MvcMusicStoreController.cs”文件中的代码为:

1 public class MvcMusicStoreController : Controller
2 {
3 public string Index()
4 {
5 return "This is my <b>default</b> action";
6 }
7
8 public string Welcome()
9 {
10 return "This is Welcome action method...";
11 }
12 }

此时重新运行程序,地址栏输入“url/MvcMusicStore”
3.数据路由
ASP.NET MVC会调用不同的控制器类(和其内部不同的操作方法)这取决于传入URL。所使用的ASP.NET MVC的默认URL路由逻辑使用这样的格式来判定哪些代码以便调用:
可在App_Start/RouteConfig.cs文件内通过配置URL路由解析规则:

1 public class RouteConfig
2 {
3 public static void RegisterRoutes(RouteCollection routes)
4 {
5 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
6
7 routes.MapRoute(
8 name: "Default",
9 url: "{controller}/{action}/{id}",
10 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
11 );
12 }
13 }

如果运行程序且不提供任何URL段,默认为“Home”的控制器和Index的操作方法,在上面的代码中的defaults部分指定:
- 第一部分的URL确定哪个控制器类会被执行。因此 /MvcMusicStore 映射到MvcMusicStoreController控制器类
- 第二部分的URL确定要执行控制器类中的那个操作方法。因此 /HelloWorld/Index,会使得 MvcMusicStoreController控制器类的Index方法被执行。请注意,只需要浏览 /MvcMusicStore路径,默认情况下会调用Index方法。如果没有明确的指定操作方法,Index方法会默认的被控制器类调用。
- 第三部分的URL段(Parameters参数)是路由数据
浏览 url/MvcMusicStore/Welcome 。Welcome方法会被运行并返回字符串“this is the welcome action method...”。
默认的MVC映射为 /[Controller]/[ActionName]/[Parameter]对于这个URL,控制器类是MvcMusicStore,操作方法是Welcome,此处并未用到[Parameters]部分。
此处对Welcome方法进行修改,并使用了C#语言的可选参数功能,numTimes参数在不传值时,默认值为1。
1 public string Welcome(string name,int numTimes =1)
2 {
3 //return "This is Welcome action method...";
4 return HttpUtility.HtmlEncode("Hello " + name + ",NumTimes is :" + numTimes);
5 }
此时运行应用程序并浏览次URL(url/MvcMusicStore/Welcome?name=Long&numtimes=4)
上面的例子,没有用到URL段参数的部分(Parameters)。通过query strings传递name和numTimes的参数
用下面的代码替换“Welcome”的方法:
1 public string Welcome(string name,int ID =)
2 {
3 //return "This is Welcome action method...";
4 //return HttpUtility.HtmlEncode("Hello " + name + ",NumTimes is :" + numTimes);
5 return HttpUtility.HtmlEncode("Hello " + name + ",ID:" + ID);
6 }
这次URL第三部分的参数匹配了参数ID。
4.添加一个视图
控制器的默认程序是:
1 public ActionResult Index()
2 {
3 return View();
4 }
上面的Index方法使用一个视图模版来生成一个HTML返回给浏览器。控制器的方法(也被称为action method(操作方法)),如上面的Index方法,一般返回一个ActionResult(或从ActionResult所继承的类型),而不是原始的类型,如字符串。
如果想使用控制器中默认的Index方法,则需要在对应的Views中添加视图文件。
在Views/MvcMusicStore -->添加 -->“MVC5 View Page with(Layout Razor)”
在指定项名称中,输入“Index”
“选择布局页(select layout page)”-->"_Layout.cshtml"-->"确定",然后在解决方案资源管理器中看到View/MvcMusicStore/Index.cshtml文件。
在Index.cshtml文件中添加以下代码

1 @{
2 ViewBag.Title = "Index";
3 }
4
5 <h2>Index</h2>
6
7 <p>Hello from our View Template!</p>

运行并调试程序,得到界面:
5.修改视图和布局页
首先,想要修改页面顶部的链接“Application name”。这段文字是每个页面的公用文字,即使这段文字出现在每个页面上,但是实际上它仅保存在工程里的一个地方。
在解决方案资源管理器里找到 Views/Shared文件夹,打开_Layout.cshtml文件。此文件称为布局页面(Layout page),并且其他所有的子页面,都共享使用这个布局页面。
6.将数据从控制器传递给视图
控制器响应请求来的URL。控制器类是写代码来处理传入请求的地方,并从数据库中检索数据,并最终决定什么类型的返回结果会发送回浏览器。视图模版可以被控制器用来产生格式化过的HTML从而返回给浏览器。
控制器负责给任何数据或者对象提供一个必须的视图模版,用这个视图模版来Render返回给浏览器的HTML。最佳的做法是:一个视图模版应该永远不会执行业务逻辑或者直接和数据库进行交互。相应的,一个视图模版应该只和控制器所提供的数据进行交互。维持这种“隔离关系”。
1 public ActionResult Index()
2 {
3 return View("NotIndex");
4 }
对于这样的编码,操作方法依然在/Views/Home目录中查找视图,但选择的不再是Index.cshtml,而是NotIndex.cshtml。
如果需要制定完全位于不同目录结构中的视图,编码如下:
1 public ActionResult Index()
2 {
3 return View("~/Views/Example/Index.cshtml");
4 }
7.添加一个模型
Entity Framework(通常称为EF)是支持代码优先(Code First)的开发模式。代码优先允许通过编写简单的类来创建对象模型。
在解决方案资源管理器,(右键单击)模型文件夹 --> 添加 --> 类
输入类名“MusicStore”,并为类添加属性:

1 public class MusicStore
2 {
3 public int ID { get; set; }
4 public string SongName { get; set; }
5 public string SingerName { get; set; }
6 public DateTime PublishDate { get; set; }
7 public decimal Price { get; set; }
8 }

类中的每一个属性对应表中的每一列。在这个类中,添加下面的MusicStoreDBContext类:
1 using System.Data.Entity;
2
3 public class MusicStoreDBContext : DbContext
4 {
5 public DbSet<MusicStore> Movies { get; set; }
6 }
MusicStoreDBContext类代表Entity Framework的音乐数据库类,这个类负责在数据库中获取、存储、更新、处理MusicStore类的实例。MusicStoreDBContext继承自Entity Framework的DbContext基类。
8.SQL Server Express LocalDB
LocalDB是一个SQL Server Express轻量级版本的数据库引擎。它在用户模式下启动、执行。LocalDB运行在一个特殊的SQL Server Express的执行模式,即允许能够使用MDF文件数据库。通常情况下,LocalDB的数据库文件都保存在web项目的App_Data文件夹下面。
注:在生产环境的Web应用程序中,不推荐使用SQL Server Express。尤其是LocalDB不应该用于Web应用程序的生产环境,因为它没有被设计要使用IIS,但是LocalDB的数据库能很容易的迁移到SQL Server或SQL Azure。
打开应用程序根目录的Web.config文件
找到数据库的连接设置代码:
1 <connectionStrings>
2 <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-MvcMusicStore-20170228045043.mdf;Initial Catalog=aspnet-MvcMusicStore-20170228045043;Integrated Security=True"
3 providerName="System.Data.SqlClient" />
4 </connectionStrings>
做如下修改:
1 <connectionStrings>
2 <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-MvcMusicStore-20170228045043.mdf;Initial Catalog=aspnet-MvcMusicStore-20170228045043;Integrated Security=True"
3 providerName="System.Data.SqlClient" />
4 <add name="MusicStoreDBContext" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\MusicStore.mdf;Integrated Security=True" providerName="System.Data.SqlClient"/>
5 </connectionStrings>
9.从控制器访问数据模型
注:进行该步骤之前,应先编译程序,这样才可以使用之前的模型类及上下文类。
Controllers文件夹 --> 新增 --> Controller --> 选择控制器
设置模型类、数据上下文类并设置控制器名称。
完成以上步骤,Visual Studio会创建以下文件和文件夹:
- 控制器文件夹中的MusicStoreController.cs文件
- 项目视图文件夹下的MusicStore文件夹
- 在新的Views/MusicStore文件夹中创建Create.cshtml、Delete.cshtml、Details.cshtml、Edit.cshtml和Index.cshtml文件。
运行程序,url输入“url/MusicStore”
ASP.NET MVC5入门指南的更多相关文章
- ASP.NET MVC5入门指南(1)*入门介绍
以下指南说明了什么是ASP.NET MVC,并说明了如何入门. ASP.NET MVC 5入门 入门 添加控制器 添加视图 添加模型 创建连接字符串并使用SQL Server LocalDB 从控制器 ...
- ASP.NET MVC5入门指南(2)*入门介绍*创建您的第一个应用
开始吧 首先安装Visual Studio 2017.然后,打开Visual Studio. Visual Studio是一个IDE或集成开发环境.就像使用Microsoft Word编写文档一样,您 ...
- ASP.NET MVC5入门1之项目创建
本博文参考ASP.NET MVC5入门指南,下载链接: ASP.NET_MVC5_入门指南 1.创建项目 文件 --> 新建 --> 项目 Visual C# --> Web --& ...
- 数迹学——Asp.Net MVC4入门指南(2):添加一个控制器
自嘲一下......万事还是得从官方的入门开始 由于找不到适合新新手的MVC入门实例所以回过头来做一下微软的 <Asp.Net MVC4入门指南>. 只有把自己放在太阳下暴晒,才知道自己有 ...
- Asp.Net MVC5入门学习系列③
原文:Asp.Net MVC5入门学习系列③ 添加一个视图(View) 接着上篇的入门系列,上面解说添加一个简单Controller(控制器),这里我们简单的在来添加一个View(视图)来展示我们Co ...
- Asp.Net MVC5入门学习系列②
原文:Asp.Net MVC5入门学习系列② 添加一个Controller(控制器) 因为我们用的是Asp.Net MVC,MVC最终还是一套框架,所以我们还是需要遵循它才能玩下去,或者说是更好的利用 ...
- Asp.Net MVC5入门学习系列①
原文:Asp.Net MVC5入门学习系列① 现在直接开始MVC5的学习系列,学习资源来自Micrsoft. 开始使用Asp.Net MVC 5 打开Visual Studio 2013,然后新建一个 ...
- Asp.Net MVC5入门学习系列⑦
原文:Asp.Net MVC5入门学习系列⑦ 接着上篇结尾所说,如果开发中刚才遇到Model需要添加或者减少字段/属性的话,但是刚好你也利用EF的Code frist通过Model生存的数据库,这时改 ...
- Asp.Net MVC5入门学习系列⑤
原文:Asp.Net MVC5入门学习系列⑤ 检查VS生产的编辑方法和编辑窗体 前面我们一步使用强类型,然后创建Controller(控制器)的时候,VS默认已经给我们把CURD都简单的实现了.这篇的 ...
随机推荐
- rest-framework框架 -- 认证权限流程源码
认证权限 解析BaseAuthentication源码 # 做认证权限 from rest_framework import exceptions from ..models import * cla ...
- css3实现对radio和checkbox的美化
一,如何隐藏小程序中的很粗的滚动条,实现页面的美化? tit: 在开发小程序的过程中,无论是横向或者纵向当产生滚动条时,系统默认的滚动条会很粗,效果展示十分难看,我们可以通过设置如下wxss代码实 ...
- 学校项目过程中知识点 Java 2015/9/15 晚
##命令行运行Java程序1.文件Java的源代码存放在扩展名为“.java”的文件中:Java源文件编译后,得到“.class”的文件2.方法命令行下编译java源代码的方法:javac 文件名. ...
- javascript 小代码
if(!("a" in window)){ var a =1; } alert(a); //undefined var a = 1,b=function a (x){ x & ...
- BZOJ4236 JOIOJI 【map】
BZOJ4236 JOIOJI Description JOIOJI桑是JOI君的叔叔.“JOIOJI”这个名字是由“J.O.I”三个字母各两个构成的. 最近,JOIOJI桑有了一个孩子.JOIOJI ...
- CDQ分治--用时间降维的美丽算法
CDQ分治–用时间降维的美丽算法 CDQ分治,网上的阐述很多,太专业性的文字我就不赘述,这里指谈谈自己的感受 还是%一下CDQ大神的论文 CDQ分治的主要想法就是降维(比如三维问题降维到二维问题),并 ...
- SSH使用密钥登录并禁止密码登录
#1 新建用于登录的用户useradd -p `echo "KYmO4ClPt1" | openssl passwd -1 -salt $(< /dev/urandom tr ...
- mysql 关联左表不存在数据 并 根据身份证计算查找大于65岁以上老人
--- //查找左边不存在数据,不能用 = '' SELECT m.uid FROM es_members m LEFT JOIN es_user_self_care_assessment u ON ...
- 《DSP using MATLAB》示例Example7.4
代码: h = [-4, 1, -1, -2, 5, 6, 5, -2, -1, 1, -4]; M = length(h); n = 0:M-1; [Hr, w, a, L] = Hr_Type1( ...
- matlab中卷积编码参数的理解
poly2trellis(7, [171 133])代表什么意思呢?首先是7,他是1*k的vector,此处k为1,[171 133]是k*n的vector,此处n就是2,那么这个编码就是1/2码率的 ...