ASP.NET MVC 控制器与视图

一、控制器相关

在Controller类中方法访问级别为public的方法,就是行为(Action).如果不希望Controller类中的方法成为Action(可以在地址栏中被访问),有两种实现方式:将方法的访问级别设置为private在方法上添加特性标记[NonAction]

                  

诸如新增\修改等功能模块,我们往往会创建2个名称相同的Action:一个action用于加载新增\修改页面;另一个action用于处理新增\修改页面提交的表单数据.那么如何区分在何时调用哪个action呢?

  我们将加载新增|修改页面时被调用的action,添加[HttpGet]特性标记;将处理页面提交的表单数据时调用的action,添加[HttpPost]特性标记.

下面的示例代码演示了如何实现学生的新增(action相关的代码).

                  

如何在Action中获取表单提交的数据?

表单中提交的数据,可以通过Action的参数进行映射.

映射的前提条件:Html标记的name属性值和action中参数的名称要一致.

下面的示例代码演示了映射的过程(注意粉色框标记的部分):

                  

Action中如何映射复杂对象?

对于上面的映射代码,我们还可以有另外一种等价的写法,就是将映射的属性定义到一个实体类中,这样我们就可以在action中添加该实体类型的参数,参考代码如下所示:

                  

如何从一个Action中跳转至另外一个Action?

新增或修改功能完成后,需要跳转至数据列表页面,我们可以通过如下代码实现:

代码 => return RedirectToAction(“ActionName”, “ControllerName”).

二、视图相关

在ASPX视图引擎中,可以使用asp服务器控件,但它的作用仅仅局限与生成html代码,而不推荐开发人员使用asp控件的事件.因此建议开发人员手工编写Html标记。

但是手写Html标记比较耗费时间,有没有更好的解决方案?答案就是使用Html辅助方法。

Html辅助方法

Html辅助方法的作用就是通过调用C#方法的方式,快速的生成相应的html标记.

Html辅助方法分为2大类:弱类型html辅助方法和强类型html辅助方法.

其中以For关键字结尾的都是强类型的辅助方法.下面的示例代码演示了二者的调用方式,以及生成的html源码。

                  

注意:Html辅助方法有很多种重载形式,在开发过程中可以根据实际需要自行选择.比如要实现一个包含class\style\onchange属性和事件的单行文本框,可以参考如下代码: 

                  

强调:如何使用HTML辅助方法生成form标记?

生成form标记的两个Html辅助方法为:Html.BeginForm()和Html.EndForm(),但他们在使用时和其他的Html辅助方法有所不同,下面的示例代码演示了它们的两种用法:

                  

如何在URL地址中传递参数?

场景一:将学生ID值映射到名称为id参数上

场景二:将学生ID值映射到名称为stuId参数上

场景三:url地址中包括stuId和name两个参数

这三种场景的使用代码如下所示:

                  

其他在实际开发过程中,一个小的功能模块就对应一个控制器.比如学生信息管理就是一个控制器,新增学生\修改学生\查询学生列表\删除学生都可以对应控制器中的Action.常用Html辅助方法汇总


弱类型


强类型


单行文本框


Html.TextBox()


Html.TextBoxFor()


多行文本框


Html.TextArea()


Html.TextAreaFor()


密码框


Html.Password()


Html.PasswordFor()


复选框


Html.Checkbox()


Html.CheckBoxFor()


单选按钮


Html.RadioButton()


Html.RadioButtonFor()


下拉列表框


Html.DropdownList()


Html.DropdownListFor()


平铺列表框


Html.ListBox()


Html.ListBoxFor()


Label


Html.Label()


Html.LabelFor()


Form表单


Html.BeginForm() Html.EndForm()


超链接


Html.ActionLink()

如何在视图中使用下拉列表

第一步:在action中构造好下拉列表中需要的数据,数据的类型为IEnumerable<SelectListItem>。

第二步:将构造好的数据放到Controller中的ViewData(ViewBag|TempData)属性中。

第三步:在视图view中使用Html.DropDownList辅助方法来生成下拉列表,而绑定的数据可以使用视图View中的ViewData来获取(换句话讲就是,Controller中放置到ViewData的数据,可以在视图View中的ViewData属性中提取)。

                  

在视图中使用Html.DropDownList绑定Ienumerable<SelectListItem>

                  

(0)

相关推荐

  • ASP.NET中MVC从后台控制器传递数据到前台视图的方式

    本文实例讲述了ASP.NET中MVC从后台控制器传递数据到前台视图的方式.分享给大家供大家参考.具体分析如下: 数据存储模型Model: 复制代码 代码如下: public class CalendarEvent { public string id { get; set; } public DateTime start { get; set; } public DateTime end { get; set; } public string backgroundColor { get; set

  • ASP.NET MVC4入门教程(二):添加一个控制器

    MVC代表: 模型-视图-控制器 .MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程序包含: · Models: 表示该应用程序的数据并使用验证逻辑来强制实施业务规则的数据类. · Views: 应用程序动态生成 HTML所使用的模板文件. · Controllers: 处理浏览器的请求,取得数据模型,然后指定要响应浏览器请求的视图模板. 本系列教程,我们将覆盖所有这些概念,并告诉您如何使用它们来构建应用程序. 首先,让我们创建一个控制器类.在解决方案资源管理器中,用

  • ASP.NET MVC中将控制器分离到类库的实现

    前言 在.ASP.NET MVC的开发中,我们创建完项目之后,ASP.NET MVC是已Model-Controller-View的形式存在的,在创建项目自动生成的内容上Model我们很容易分离成类库,所以这里不予说明,那么这时候我们就像Controller是不是也能够分离出去呢?答案是肯定的,下面我们探讨一下Controller如何分离出去. 这里我提供两种分离的方法,一是重写方法继承自IControllerFactory接口,实现里面的方法,二是MVC提供了直接在路由注册里面去控制控制器的书

  • 详解Asp.Net MVC——控制器与动作(Controller And Action)

    一.理解控制器 1.1.什么是控制器 控制器是包含必要的处理请求的.NET类,控制器的角色封装了应用程序逻辑,控制器主要是负责处理请求,实行对模型的操作,选择视图呈现给用户. 简单理解:实现了IController接口,修饰符必须是public,不能是抽象的,不能是泛型的,类名必须以Controller结尾. 在MVC框架中,控制器类必须实现System.Web.Mvc命名空间下的IController接口,如上图所示,这是一个非常简单的接口,该接口仅有一个Execute方法,当请求该控制器时E

  • ASP.NET MVC4入门教程(五):从控制器访问数据模型

    在本节中,您将创建一个新的MoviesController类,并在这个Controller类里编写代码来取得电影数据,并使用视图模板将数据展示在浏览器里. 在开始下一步前,先Build一下应用程序(生成应用程序)(确保应用程序编译没有问题) 用鼠标右键单击Controller文件夹,并创建一个新的 MoviesController控制器.当Build成功后,会出现下面的选项.设定以下选项: · 控制器名称: MoviesController.(这是默认值). · 模板: MVC Controll

  • ASP.NET MVC从控制器传递数据到视图的四种方式详解

    前奏 1. 在新建项目中的Models文件下,新建Products类: public class Products { public int Id { get; set; } public string Name { get; set; } public double Price { get; set; } } 2. 在控制器中实例化此类 var p = new Products() { Id = 1, Name = "饮料", Price = 2.5 }; 方式1:ViewData

  • ASP.NET在MVC控制器中获取Form表单值的方法

    本文实例讲述了ASP.NET在MVC控制器中获取Form表单值的方法.分享给大家供大家参考,具体如下: 在MVC控制器中,如果我们想直接获取表单中某个标签元素的值,可以使用MVC中提供的FormCollection类,具体用法如下所示: 视图部分: @using (Html.BeginForm()) { <text>您输入的值是:</text><span>@ViewBag.FormValue</span> <input type="text&

  • Asp.net MVC中获取控制器的名称的方法

    1.视图中 string controller = ViewContext.RouteData.Route.GetRouteData(this.Context).Values["controller"].ToString(); string controller = ViewContext.RouteData.Values["controller"].ToString(); 2.控制器的action中 string controller = RouteData.Ro

  • ASP.NET MVC 控制器与视图

    一.控制器相关 在Controller类中方法访问级别为public的方法,就是行为(Action).如果不希望Controller类中的方法成为Action(可以在地址栏中被访问),有两种实现方式:将方法的访问级别设置为private在方法上添加特性标记[NonAction] 诸如新增\修改等功能模块,我们往往会创建2个名称相同的Action:一个action用于加载新增\修改页面;另一个action用于处理新增\修改页面提交的表单数据.那么如何区分在何时调用哪个action呢? 我们将加载新

  • ASP.NET MVC中的视图生成实例分析

    本文实例分析了ASP.NET MVC中的视图生成过程.分享给大家供大家参考.具体如下: 在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Model 用来表示处理的数据. 从控制器到视图 通常,在 Controller 中,我们定义多个 Action ,每个 Action 的返回类型一般是 ActionResult,在 Action 处理的最后,我们返回对于视图的调用. 复制代码 代码如下: pub

  • ASP.NET MVC中分部视图的应用方法

    概述: 在ASP.NET Web Form的开发经验中,对于User Control使用比较频繁,可以减少重复的代码,利于页面模块化,这个概念也被引入了ASP.NET MVC.即"分部视图". 什么是分部视图,我们应该什么时候应该用? 作为一个对ASP.NET MVC 模型很熟悉的开发者,他们自然想创建一个内容和代码都可以重用的组件,在web 窗体,我们可以创建一个web用户控件或web服务器控件.但是在MVC,我们应该用分部视图,在这个概念的角度看,对任何情景的应用情景都应该有用.

  • ASP.NET MVC使用母版页视图

    一.母版页介绍和使用 母版页的扩展名为".cshtml",也叫做视图布局页,它相当于网页的模板.在其他网页中,只要引用了母版页,母版页的页面内容就可以自动显示出来,设计者可以修改引用的母版页中预留的部分,其他部分保持不变,这样就可以使多个页面的风格保持一致,给网页设计带来了很大的方便. 1.创建母版页视图的要点 (1).在Views的子文件夹Shared文件夹里面添加. (2).以“_”前缀作为开头. (3).以"Layout.cshtml"作为结束. 2.MVC母

  • ASP.NET Core MVC中的视图(Views)

    目录 1.什么是视图 2.创建视图 3.控制器指定视图 4.给视图传递数据 1.弱类型数据 2.动态视图 5.更多视图特性 ASP.NET Core MVC 控制器可以使用视图返回格式化的结果. 1.什么是视图 在 MVC 中,视图封装了用户与应用交互呈现细节.视图是具有生成要发送到客户端内容的,包含嵌入代码的HTML模板.视图使用使用 Razor 语法,该语法允许以最少的代码或复杂度与 HTML 进行交互. ASP.NET Core MVC 视图默认以 .cshtml 文件保存在应用程序的 V

  • 详解使用asp.net mvc部分视图渲染html

    为了提升用户体验,一般我们采用ajax加载数据然后根据数据渲染html,渲染html可以使用前端渲染和服务器端渲染. 前端渲染 使用前端模版引擎或MVC框架,例如underscore.js的template或者是使用angular.js等框架,当然也可以不用任何框架自己拼接html. <!DOCTYPE html> <html> <head> <title>underscore.js的template渲染html</title> </hea

  • ASP.NET MVC学习教程之Razor语法

    前言 ASP.NET MVC 3配有一个新的名为"Razor"的视图引擎选项(除了已有的.aspx视图引擎).Razor尽量减少编写一个视图模板需要敲入的字符数,实现快速流畅的编程工作流.与大部分模板的语法不同,你不必在HTML中为了明确地标记出服务模块的开始和结束而中断编程.Razor解析器足够聪明,能从你的代码中推断出来.这使其简洁,富有表现力的语法输入干净,快速,有趣.下面话不多说了,来一起看看详细的介绍吧 1. 表达式 表达式必须跟在"@"符号之后, 2.代

  • ASP.NET MVC中Controller控制器向View视图传值的几种方式

    一.准备工作 创建一个ASP.NET MVC程序,然后在Models文件夹里面新添加Student实体类,用来模拟从Controller向View传递数据,Student类定义如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MVCStudyDemo.Models { public class Student { public int ID { ge

随机推荐