ASP.NET MVC 5 - 将数据从控制器传递给视图

Mvc的数据库的连表查询 Mvc的数据库的连表查询 在学习数据库查询中,有时候我们需要的数据,往往不能在同一表内查询到获取到,那么我们就需要连接多张表进行查询,如下面的查询。 public ActionResult selectEmployeeAll(LayuiTabllePage layuiTablePage) 这里的括号里的传入的参数,是因为我们查询出来的数据量可能比较大的,因而需要对它在页面进行分页的处理,这里的传... 阅读详情

在我们讨论数据库和数据模型之前,让我们先讨论一下如何将数据从控制器传递给视图。控制器类将响应请求来的URL。控制器类是给您写代码来处理传入请求的地方,并从数据库中检索数据,并最终决定什么类型的返回结果会发送回浏览器。视图模板可以被控制器用来产生格式化过的HTML从而返回给浏览器。

控制器负责给任何数据或者对象提供一个必需的视图模板,用这个视图模板来Render返回给浏览器的HTML。最佳做法是:一个视图模板应该永远不会执行业务逻辑或者直接和数据库进行交互。相应的,一个视图模板应该只和控制器所提供的数据进行交互。维持这种"隔离关系"可以帮助,保持代码的干净、测试性和更易维护。

当前, HelloWorldController类中Welcome操作方法需要一个name和一个numTimes参数,然后直接输出给浏览器。相比只返回一个字符串,让我们来改变控制器,来使用视图模板吧。视图模板将生成动态的HTML,这意味着您需要通过适当的方式把数据从控制器传递给视图,从而才能生成动态的HTML。您可以把视图模板需要的动态数据 (参数)在控制器中放入到一个ViewBag对象中,然后视图模板可以访问这个对象。

打开HelloWorldController.cs文件,更改 Welcome方法,将Message和NumTimes的值添加到 ViewBag对象里。ViewBag是一个动态的对象,这意味着在您没有给ViewBag放置属性时,它没有任何属性,您可以把任何您想放置的对象放入到 ViewBag对象中。 ASP.NET MVC model binding system 会自动将地址栏中URL里的 query string映射到您方法中的参数(name 和numTimes)。

完整的HelloWorldController.cs文件如下所示:

using System.Web;
using System.Web.Mvc;
namespace MvcMovie.Controllers
{
public class HelloWorldController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Welcome(string name, int numTimes = 1)
{
ViewBag.Message = "Hello " + name;
ViewBag.NumTimes = numTimes;
return View();
}
}
}

现在ViewBag对象包含了数据,并将自动传递给视图模板。 接下来,您需要一个欢迎视图模板 !在生成菜单中,选择生成 MvcMovie (快捷键 Ctrl+Shift+B) ,以确保项目编译成功。

在Views\HelloWorld文件夹上,右键单击”添加(视图)”,选择”MVC 5 View Page with (Layout Razor).”

image

在 “指定项名称 (Specify Name for Item )” 对话框, 输入” Welcome”, 点击“确定(OK)”.    
在“
选择布局(the Select a Layout Page)”对话框,接受缺省的”布局_Layout.cshtml”,并点击“确定(OK)”.    
image

MvcMovie\Views\HelloWorld\Welcome.cshtml文件创建成功。

在Welcome.cshtml文件里替换标记, 您将创建一个循环,循环说多次“Hello”。

下面显示了完整的Welcome.cshtml文件。

@{
ViewBag.Title = "Welcome";
}
<h2>Welcome</h2>
<ul>
@for (int i = 0; i < ViewBag.NumTimes; i++)
{
<li>@ViewBag.Message</li>
}
</ul>

运行应用程序,并浏览下面的 URL : http://localhost:xx/HelloWorld/Welcome?name=Scott&numtimes=4

现在,模型绑定(model binder) 使得数据从URL传递给控制器。控制器将数据装入到ViewBag对象中,通过该对象传递给视图。然后视图为用户生成显示所需的HTML。

image

在上面的示例中,我们使用了ViewBag对象把数据从控制器传递给了视图。在本系列教程后面的文章中,我们将使用视图模型来将数据从一个控制器传递到视图中。用视图模型来传递数据,这一般是首选的办法。Blog Dynamic V Strongly Typed Views 有更加详细的介绍。

到这里,这是一种"M"模型,但不是数据库的那种“M”模型。让我们来创建一个电影数据库吧。

 

 

-----------------------------------------------------------------------------------------

 

《ASP.NET MVC 5 入门指南》12篇文章汇总如下:

 

1. ASP.NET MVC 5 - 开始MVC 5之旅

 

2. ASP.NET MVC 5 - 控制器

 

3. ASP.NET MVC 5 - 视图

 

4. ASP.NET MVC 5 - 将数据从控制器传递给视图

 

5. ASP.NET MVC 5 - 添加一个模型

 

6. ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB

 

7. ASP.NET MVC 5 - 从控制器访问数据模型

 

8. ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)

 

9. ASP.NET MVC 5 - 给电影表和模型添加新字段

 

10. ASP.NET MVC 5 - 给数据模型添加校验器

 

11. ASP.NET MVC 5 - 查询Details和Delete方法

 

12. ASP.NET MVC 5 - 使用Wijmo MVC 5模板1分钟创建应用

 

 

 

希望这些文章对感兴趣的朋友有所帮助,另附上PDF版的汇总文档:

 

《ASP.NET MVC 5 入门指南》PDF版

 

基于Qt实现Modbus RTU串口从站模拟器,解决上位机联调难题 在工业自动化与嵌入式系统开发中,上位机与现场设备的联调常常受限于设备不在现场或产线占用,此时一个可配置的Modbus RTU从站模拟器能大幅提升调试效率。Modbus RTU作为工业通信领域应用最广泛的协议之一,采用主从式架构,通过串口传输包含地址、功能码、数据与CRC16校验的报文帧。理解帧结构与CRC校验算法,是掌握协议底层原理和排查通信故障的基础。利用Qt的QSerialPort模块开发从站程序,不仅能够模拟真实设备响应上位机的读写请求,还能通过可视化界面实时监控报文交互,为PLC、触摸屏、组态软件等 阅读详情

相关推荐

内网CentOS离线部署LibreOffice:从依赖缺失到服务启动的完整避坑指南

本文详细介绍了在CentOS内网环境中离线部署LibreOffice的完整流程,包括依赖包准备、安装顺序优化及常见报错解决方案。针对金融等封闭网络场景,提供从rpm包选择到服务启动的全套避坑指南,特别解决libXinerama等图形库缺失问题,确保文档转换服务稳定运行。

weixin_33416697的博客 246

.net mvc html访问数据库,【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6) - 三生石上...

图挂了的说明:我是在Word中写的本系列文章,然后转成的HTML,所以图片都存在于 fineui.com 服务器,由于临时访问量太多,服务器喘不过气了。。。。你可以稍后访问,实在是抱歉......目录【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6)【第三篇】ASP.NET MVC快速入门之安全策略(MVC...

weixin_29184371的博客 380

5款免费二进制编辑器横向评测:从HxD到ImHex谁更适合你?

本文对5款免费二进制编辑软件进行深度横向评测,包括HxD、wxHexEditor、010 Editor、ImHex和GNU Emacs,涵盖从轻量级到专业级的各种需求。评测基于文件处理能力、编辑功能、分析工具等核心维度,为开发者、逆向工程师和安全研究人员提供实用选择指南,帮助用户根据具体场景选择最适合的二进制编辑工具。

weixin_29278805的博客 371

.net mvc(一)将数据库提取出来显示在网页

默认已经连接数据库,数据库实体名称是:MusicStoreBD.cs 一、实例化数据库 ①在项目文件夹下的Controller中创建新控制器MusicStore(可选操作) ②实例化:MusicStoreBD ms = new MusicStoreBD(); MusicStoreBD ms = new MusicStoreBD(); 二、添加操作 ①提取数据 ②显示数据 public Actio...

YUEXILIULI的博客 2518

星网锐捷语音网关密码重置恢复出厂设置

星网锐捷语音网关---密码重置 第一种星网锐捷SVX网关恢复出厂设置的方法 eth1口 任意口插网线,连接电脑并设置电脑固定ip为: 一, 二 网页输入: 192.168.88.86 admin 默认密码 admin 登陆。 忘记密码 可通过以下方法重置: 三: 通过crt或者 shell工具 ,连接 root@192.168.88.86 连续输入两次 passwd a12345678 reboot重启后。通过账号 密码 a12345678 即可登陆系...

cibazhanji2176的博客 1万+

Mixly/Arduino实战:WS2812点阵动态显示自定义图案与汉字

本文手把手教你使用Mixly和Arduino驱动WS2812点阵屏,实现自定义图案与汉字的动态显示。内容涵盖硬件连接、取模软件设置、高效数据处理技巧(巧用Excel)、Mixly图形化编程及Arduino代码解析,并深入探讨动态显示与滚动汉字原理,最后提供常见问题排查与性能优化心得,助你从零开始轻松玩转智能硬件。

weixin_29185199的博客 454

ASP.NET MVC 5 Web编程5 -- 页面传值的方式

本篇文章将讲述MVC的页面传值方式,具体包括:后端向前端传值(Controller向View传值);前端向后端传值(View向Controller传值);Action与Action之间的传值。 回顾 我们回顾下在ASP.NET WebForms中,页面之间最常用的传值方式,有以下几种: a). QueryString(也叫URL传值) b). Session c). Cookie d)...

weixin_30374009的博客 190

ESP8266+Mixly+MIXIO物联网实战:用色盘控制WS2812 RGB灯(附完整代码)

本文详细介绍了如何利用ESP8266微控制器、Mixly图形化编程工具与MIXIO物联网平台,快速构建一个可通过网页色盘远程控制WS2812 RGB智能灯带的实战项目。内容涵盖硬件接线、平台配置、代码编写与调试全流程,旨在帮助物联网爱好者与初学者轻松实现创意灯光应用,掌握智能硬件开发的核心技能。

gin88的博客 261

[转]ASP.NET MVC 5 - 将数据从控制器传递给视图

在我们讨论数据库和数据模型之前,让我们先讨论一下如何将数据从控制器传递给视图。控制器类将响应请求来的URL。控制器类是给您写代码来处理传入请求的地方,并从数据库中检索数据,并最终决定什么类型的返回结果会发送回浏览器。视图模板可以被控制器用来产生格式化过的HTML从而返回给浏览器。 控制器负责给任何数据或者对象提供一个必需的视图模板,用这个视图模板来Render返回给浏览器的HTML。最...

dianjin3567的博客 99

实战解析:如何通过LTspice仿真优化MOS管缓启动电路,解决上电冲击电流问题

本文详细解析如何通过LTspice仿真优化MOS管缓启动电路,有效解决上电冲击电流问题。文章从问题根源分析入手,介绍LTspice环境搭建、缓启动电路设计原理、参数优化技巧及实际工程问题排查,帮助工程师掌握MOS管电源开关电路的关键设计方法,提升系统可靠性和性能。

weixin_28683689的博客 512

面向可扩展的 ABAP CDS:EXTEND VIEW 全面实战与工程化指引

摘要: 本文深入讲解ABAP CDS的EXTEND VIEW功能,帮助开发者在标准或自建模型上安全扩展字段与关联。核心内容包括: 作用:避免直接修改标准CDS,通过轻量扩展添加业务字段和关联,降低维护风险。 语法要点:需定义CDS扩展实体名和Dictionary Append View名,支持添加普通字段、关联,但不允许聚合或修改原有结构。 限制:不能扩展含聚合、UNION的视图,且扩展字段需避免命名冲突。 工程实践:建议使用客户命名空间,区分结构扩展与元数据扩展,并注意功能性变更需通过其他方式实现。 示例

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 393

ASP.NET MVC 5 - 将数据从控制器传递给视图--ViewBag方式注意点

ViewBag的使用     ViewBag主要用于从控制器往视图中传输少量数据。ViewBag是动态类型,使用时直接添加属性赋值即可 ViewBag.parameter。直接上代码:控制器中代码:        public ActionResult IndexView(string parameter)        {            ViewBag.parameter = param...

BuildMyDream_zxz的博客 1280

CAN轴控制流【6041,6040】

【代码】CAN轴控制流【6041,6040】

cfqq1989的博客 1782

ASP.NET MVC 5 学习教程:控制器传递数据给视图

ASP.NET MVC 5 学习教程:控制器传递数据给视图 原文ASP.NET MVC 5 学习教程:控制器传递数据给视图 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控制器访问模型的数据 生成的代码详解 使用 SQ...

weixin_30809173的博客 102

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: ASP.NET MVC 5 - 视图
下一篇: 如何选择高性价比的控件产品
ComponentOne服务团队
博客等级 码龄12年 5粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值