ASP.NET MVC Music Store教程(2):控制器

简介: 转自http://firechun.blog.163.com/blog/static/3180452220110272197830/在传统的Web架构中,URL总是映射到磁盘上的文件。例如:一个类似于“/Products.aspx”或“/Products.php”的URL可能由“Products.aspx”或“Products.php”文件来处理。

转自http://firechun.blog.163.com/blog/static/3180452220110272197830/

在传统的Web架构中,URL总是映射到磁盘上的文件。例如:一个类似于“/Products.aspx”或“/Products.php”的URL可能由“Products.aspx”或“Products.php”文件来处理。

在基于MVC的Web架构中,URL的映射有一些不同,映射到文件被替换成映射到类中的方法,这些类被叫做的“Controllers”(控制 器),由它们来响应和处理HTTP请求、用户输入、接收和保存数据,并且决定如何将响应发回到客户端(显示HTML,下载文件,重定向URL等)。

添加 HomeController
我们通过添加一个控制器类来开始我们的MVC Music Store应用程序,它将处理链接到网站主页的URL。遵照ASP.NET MVC的命名约定,我们给这个类取名“HomeController”。

在“解决方案资源管理器”中的“Controllers”文件夹上单击右键,选择“添加->控制器”命令:

ASP.NET MVC Music Store教程(2) - firechun - firechun的博客

 在“添加控制器”对话框中,将默认名称改为“HomeController“,按“添加”按纽。

ASP.NET MVC Music Store教程(2) - firechun - firechun的博客

 这将创建一个新的文件——HomeController.cs,并且包含下列代码:

using System; 
 using System.Collections.Generic; 
 using System.Linq; 
 using System.Web; 
 using System.Web.Mvc; 
  
namespace MvcMusicStore.Controllers 

    public class HomeController : Controller 
    { 
        // 
        // GET: /Home/ 
        public ActionResult Index() 
        { 
            return View(); 
        } 
    } 
}

为了尽可能简单地开始,我们用简单的返回字符串的方法来替换原来的Index方法,我们只需要做两点简单修改

  • 修改方法的返回类型,由ActionResult改成string
  • 修改return语句返回字符串“Hello from home”
现在,方法看起来是这样:
public string Index()  {      return "Hello from Home";  }
启动应用程序
原文很详细,从来没用过VS的看原文也知道怎么运行,这里不写了,总之现在可以启动程序,按F5(调试启动)或Ctrl-F5(不调试启动)
我们看到了这个:
 
 
ASP.NET MVC Music Store教程(2) - firechun - firechun的博客
 OK,相当快捷,我们创建了一个新的Web站点,添加了三行代码,在浏览器中呈现出一段文本。很明显,这只是开始。
(关于VS虚拟IIS服务器的说明文字,不写了)
添加 StoreController
我们添加了一个简单的HomeController实现网站主页,现在,我们添加另一个控制器来实现音乐仓库的浏览功能。仓库控制器将实现下列功能:
  • 音乐仓库的类别列表页面
  • 列出某类别下的所有音乐唱片页面
  • 显示指定音乐唱片的详细信息
(原文很啰嗦,不写了)
重复添加HomeController的过程,将名字改为StoreController。
新的StoreController已经有了Index方法,我们使用Index方法来实现所有类别的列表页面,同时再添加二个方法Browse和Details来实现另外两个功能。
这些Controller(控制器)中的方法——Index、Browser和Detail被称为“Controller Actions”,如同你已经看到的HomeController.Index()动作方法,它们的工作是响应URL的请求并且(通常来说)决定什么样的内容发回到浏览器或用户请求的URL。
我们修改Index()方法,让它返回字符串“Hello from Store.Index()”,对Browse()和Details()方法也做类似的修改以完成StoreController的实现。
using System; 
 using System.Collections.Generic; 
 using System.Linq; 
 using System.Web; 
 using System.Web.Mvc; 
  
namespace MvcMusicStore.Controllers 

    public class StoreController : Controller 
    { 
        // 
        // GET: /Store/ 
        public string Index() 
        { 
            return "Hello from Store.Index()"; 
        } 
        // 
        // GET: /Store/Browse 
        public string Browse() 
        { 
            return "Hello from Store.Browse()"; 
        } 
        // 
        // GET: /Store/Details 
        public string Details() 
        { 
            return "Hello from Store.Details()"; 
        } 
    } 
}
再次启动项目并分别在浏览下列URL:
  • /Store
  • /Store/Browse
  • /Store/Details
访问这些URLs将调用控制器中的动作方法并返回字符串:
 
 
太棒了!不过这仅仅是一些固定不变的字符串,我们来让它们变成动态的:从URL中获得一些信息并把它输出到网页上。
首先,我们修改Browser动作方法,让它接收来自URL的参数(QueryString)。我们为动作方法添加一个参数——gener,当动作方法被调用时,ASP.NET MVC会通过URL的QueryString或表单提交自动为它传递一个叫“gener”的参数。
// 
// GET: /Store/Browse?genre=?Disco 
public string Browse(string genre) 
 { 
    string message = HttpUtility.HtmlEncode("Store.Browse, Genre = " 
+ genre); 
  
    return message; 
 }
注意: 我们使用HttpUtility.HtmlEncode方法审核用户输入,这可以防止用户使用类似/Store/Browse?Genre=<script>window.location=’http://hackersite.com’</script>这样的链接对视图进行JavaScript注入攻击user 
现在,我们来浏览/Store/Browse?Genre=Disco
 
 
下一个修改是让Details动作读取并显示一个名叫“ID”的输入参数。与上一个方法不同的是,我们不想把ID的值放到QueryString参数中,而是直接把它作为URL的一部份,例如:/Store/Details/5
ASP.NET MVC很容易让我们实现这样的想法而不需要做任何设置,ASP.NET MVC的默认路由设置把URL中动作方法后面的部份看成一个名叫“ID”的参数,如果你的动作方法有一个叫“ID”的参数,ASP.NET MVC会自动这部份做为参数传递。
// 
// GET: /Store/Details/5 
public string Details(int id) 
 { 
    string message = "Store.Details, ID = " + id; 
  
    return message; 
 }
运行应用程序并且浏览/Store/Details/5
 
 
看看到目前为止我们做了什么:
  • 在VS中创建了一个新的ASP.NET MVC项目
  • 讨论了ASP.NET MVC应用程序的基本的目录结构
  • 学习了如何使用ASP.NET开发服务器运行Web站点(这部份我没写。。。)
  • 创建了两个控制器类:HomeController和StoreController
  • 在控制器中添加了动作方法响应URL请求并把文本返回给浏览器
 
目录
相关文章
|
5月前
|
设计模式 存储 前端开发
MVC(模型-视图-控制器)是一种在Web应用程序开发中广泛使用的软件设计模式
【5月更文挑战第12天】MVC模式是Web应用开发中的常见设计模式,将逻辑、数据和界面分离,提升代码可维护性和重用性。模型处理数据逻辑,视图展示数据,控制器协调用户输入与模型视图交互。优点包括代码分离、易维护、可扩展和组件重用,促进高效灵活的开发。
50 2
|
1月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
32 7
|
1月前
|
SQL 关系型数据库 数据库
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
|
1月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
42 0
|
2月前
|
开发框架 .NET API
在IIS上部署ASP.NET Core Web API和Blazor Wasm详细教程
在IIS上部署ASP.NET Core Web API和Blazor Wasm详细教程
136 3
|
2月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
38 0
|
2月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
2月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
99 0
|
5月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
167 0
|
5月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
72 0