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”

菜鸟一枚,但有一颗不断进取的心; 兴趣所至,相信自己终会成功!!!!! 加油,imstrive
转:https://www.cnblogs.com/imstrive/p/6480118.html

ASP.NET MVC5入门指南的更多相关文章

  1. ASP.NET MVC5入门指南(1)*入门介绍

    以下指南说明了什么是ASP.NET MVC,并说明了如何入门. ASP.NET MVC 5入门 入门 添加控制器 添加视图 添加模型 创建连接字符串并使用SQL Server LocalDB 从控制器 ...

  2. ASP.NET MVC5入门指南(2)*入门介绍*创建您的第一个应用

    开始吧 首先安装Visual Studio 2017.然后,打开Visual Studio. Visual Studio是一个IDE或集成开发环境.就像使用Microsoft Word编写文档一样,您 ...

  3. ASP.NET MVC5入门1之项目创建

    本博文参考ASP.NET MVC5入门指南,下载链接: ASP.NET_MVC5_入门指南 1.创建项目 文件 --> 新建 --> 项目 Visual C# --> Web --& ...

  4. 数迹学——Asp.Net MVC4入门指南(2):添加一个控制器

    自嘲一下......万事还是得从官方的入门开始 由于找不到适合新新手的MVC入门实例所以回过头来做一下微软的 <Asp.Net MVC4入门指南>. 只有把自己放在太阳下暴晒,才知道自己有 ...

  5. Asp.Net MVC5入门学习系列③

    原文:Asp.Net MVC5入门学习系列③ 添加一个视图(View) 接着上篇的入门系列,上面解说添加一个简单Controller(控制器),这里我们简单的在来添加一个View(视图)来展示我们Co ...

  6. Asp.Net MVC5入门学习系列②

    原文:Asp.Net MVC5入门学习系列② 添加一个Controller(控制器) 因为我们用的是Asp.Net MVC,MVC最终还是一套框架,所以我们还是需要遵循它才能玩下去,或者说是更好的利用 ...

  7. Asp.Net MVC5入门学习系列①

    原文:Asp.Net MVC5入门学习系列① 现在直接开始MVC5的学习系列,学习资源来自Micrsoft. 开始使用Asp.Net MVC 5 打开Visual Studio 2013,然后新建一个 ...

  8. Asp.Net MVC5入门学习系列⑦

    原文:Asp.Net MVC5入门学习系列⑦ 接着上篇结尾所说,如果开发中刚才遇到Model需要添加或者减少字段/属性的话,但是刚好你也利用EF的Code frist通过Model生存的数据库,这时改 ...

  9. Asp.Net MVC5入门学习系列⑤

    原文:Asp.Net MVC5入门学习系列⑤ 检查VS生产的编辑方法和编辑窗体 前面我们一步使用强类型,然后创建Controller(控制器)的时候,VS默认已经给我们把CURD都简单的实现了.这篇的 ...

随机推荐

  1. 看一遍就懂,详解java多线程——volatile

    多线程一直以来都是面试必考点,而volatile.synchronized也是必问点,这里我试图用容易理解的方式来解释一下volatile. 来看一下它的最大特点和作用: 一 使变量在多个线程间可见 ...

  2. golang slice 与list 的性能分析。

    一 · 比较slice 与 list 遍历创建和添加元素速度. package main import ( "time" "fmt" "contain ...

  3. 【剑指offer】08二叉树的下一个节点,C++实现

    原创博文,转载请注明出处! # 题目 父节点指向子节点的指针用实线表示,从子节点指向父节点的指针用虚线表示. # 思路 如果节点有右子节点,则右子节点的最左节点是该节点的下一个节点.例如,寻找b的下一 ...

  4. linux下环境变量PATH设置错误的补救

    本文转自: http://blog.clzg.cn/blog-614449-740527.html    之前不小心在/etc/profile中添加了错误的PATH变量,导致几乎所有的系统命令无法使用 ...

  5. 动态样式语言Sass&Less介绍与区别

    一. Sass/Scss&Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,语法跟css一样(但多了些功能),比css好写, ...

  6. Jmeter-ForEach控制器

    ForEach Controller需要配合‘用户定义的变量’来使用,作用是参数化 名称:字面意思,ForEach Controller的名称 注释:字面意思 输入变量前缀:变量的前缀:如要使用的变量 ...

  7. const in C/C++

    1.const 对象必须初始化,因为一旦创建后值不能改变. Eg: const int i = GetSize(); //正确:运行时初始化 const int j = 42;   //正确:编译时初 ...

  8. BW模型数据删除

    删除数据一般可以按请求(Request)来删除,需要从顶层模型往下删:也可以完成删除,在模型中就没有删除的顺序.本例中采用完全删除,但是按照从顶层模型往下的顺序删除数据.   1.删除信息立方体数据 ...

  9. anycast简单总结

    一针见血,言简意赅的总结 bgp+anycast就是不同服务器用了相同的ip地址 anycast 技术特点 bgp+anycast就是多个主机使用相同ip地址的一种技术,当报文发给该地址时,根据路由协 ...

  10. springboot: 使web项目支持jsp

    1.springboot为什么不推荐使用jsp? 参考地址:https://spring.io/blog/2012/10/30/spring-mvc-from-jsp-and-tiles-to-thy ...