博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC 学习2、从Controller传递数据到View
阅读量:5997 次
发布时间:2019-06-20

本文共 2020 字,大约阅读时间需要 6 分钟。

 

 参考:

一,Controller 中的ActionResult方法会用一个View Template生成HTML页面反馈到浏览器中:

1,修改Index方法如下

public ActionResult Index() { return View();}

2,在Index 方法中右键,添加View视图,Views视图下的HelloWorld文件夹中生成了对应的Index.cshtml文件

                  

3,打开index.cshtml文件,并添加一行html代码如下:

@{ViewBag.Title = "Index";}

Index

Hello from our View Template!

4,右击index.cshtml,页面探测器Page Inspector打开(ctrl+K,ctrl+G),可看到生成的html页面,Ctrl+F5刷新( ),我们看到虽然Controller中的Index方法就只是简简单单的 Return View(),并没有特别指定要输出哪个View Page,但是MVC默认会调用Index.cshtml.这就是MVC中的Hard-Code.

以上页面的运行,后需要理解页面具体是怎么运行出来的:从一个ActionResult方法指向View页面显示在浏览器中

URL→Controller 中的ActionResult方法→ActionResult方法名对应的Views中同名的视图

 

二,了解_Layout.cshtml页面

注意到:上面所显示的这个index.cshtml的页面标题却是”index-我的ASP.NET MVC…”,这是因为index.cshtml调用了_layout.cshtml模板

下面我们来改一下View的模板页面:/Views/Shared/_Layout.cshtml

Layout.cshtml 布局页面,就相当于一个容器,可以把layout页面的布局以及内容套用于其它页面。

的页面内容,例如:我们打开链接 这时候,的位置

改变Layout中的Title: ViewBag的值加”-Movie App”

@ViewBag.Title - Movie App

子页面:

@{ ViewBag.Title = "Movie List";}

My Movie List

 ViewBag.Title可以在layout.cshtml和index.cshtml之间进行传值,页面运行以后可以看到title:

 

 

三,传输数据从Controller到View:

Controller Classes 在浏览器请求URL的时候被调用

Controller Class中的代码就是处理浏览器请求,从数据库中检索数据,最终调用相应的View显示在浏览器中

View中不应该直接有与数据交互和业务逻辑的部分,View只可以接收从Controller传递过来的数据

这种分离模式,可以让你的代码简洁,测试性能以及可维护性能更高

 

ViewBag 是一个Dynamic Object,这意味着你可以传递任何类型的数据给它。

ViewBag 没有定义任何属性,直到你赋值给它。

 

ASP.NET MVC model binding system 会自动映射URL中的参数到Controller的方法的参数中。更新Controller中的Welcome方法如下:

public ActionResult Welcome(string name, int numTimes)        {            ViewBag.Message = "Hello " + name;            ViewBag.NumTimes = numTimes;            return View();        }

 运行一下,看到数据传递过程:

 (URL)

              url请求传递到HelloWorldController的Welcome方法中          

public ActionResult Welcome(string name, int numTimes)        {            ViewBag.Message = "Hello " + name;            ViewBag.NumTimes = numTimes;            return View();        }

                  Welcome中的方法的数据传递到View页面中

 

    @for (int i = 1; i < ViewBag.NumTimes; i++) {
  • @ViewBag.Message
  • }

.cshtml显示效果:

 

 

 

转载于:https://www.cnblogs.com/siri/p/3584151.html

你可能感兴趣的文章
使用NHibernate, Oracle Clob/NClob无法插入
查看>>
Using Script and Style Bundles【翻译】
查看>>
构建大型程序最大的秘密
查看>>
【C】——C模拟atm取款机
查看>>
Boost application performance using asynchronous I/O-ref
查看>>
GLSL实现简单硬件Anisotrop Lighting 【转】
查看>>
非常特别的一个动态规划新手教程
查看>>
常用的经典jquery代码[转]
查看>>
VB.net数据库编程(03):一个SQLserver连接查询的简单样例
查看>>
C#(winform)设置窗口置顶
查看>>
[Mac A]如何学习Mac编程?
查看>>
Linux - expect自动化远程登录脚本
查看>>
shell语法简单介绍
查看>>
ARP缓存记录种类动态条目和静态条目
查看>>
Socket原理与编程基础(转)
查看>>
基于jquery的json转table插件jsontotable
查看>>
PEP8 Python 编码规范
查看>>
Linux的常用命令
查看>>
MyEclipse 6.5 代码自动提示功能配置教程
查看>>
Supports BorlandIDEServices
查看>>