文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-view.html

上一节:ASP.NET MVC 5 入门教程 (3) 路由Route

下一节:ASP.NET MVC5 + EF6 入门教程 (5) Model和Entity Framework

源码下载:点我下载

View(视图)用来显示被controller处理好的数据。本节我们就来看看如何通过controller访问一个View页面,如何从controller向View传值。

打开Controllers文件夹下的FirstController.cs,我们把其中的代码从返回一个字符串改成返回一个View。代码如下:

using System.Web.Mvc;
namespace SlarkInc.Controllers
{
public class FirstController : Controller
{
public ActionResult Index()
{
return View();
}
}
}

这里表示名为First的Controller的Index Action执行后返回一个View。

FirstController对应的View都在Views文件夹下的First文件夹内。其Index Action对应的View应该是First文件夹内的Index.cshtml文件。因此,我们首先删除掉First文件夹内的文件。然后右键点击First文件夹选择添加->带有布局的 MVC 5视图页。

在弹出的项目名中输入Index,点击确定。

在选择布局页中保持默认并点击确定。

这样,一个View就创建好了,文件名为Index.cshtml。

文件内容如下:

@{
Layout = "~/Views/Shared/_Layout.cshtml";
}

这段代码表示应用了这个路径下的模板。

右键点击Index.cshtml文件并选择在浏览器中查看。

运行结果如下图所示。注意下图的URL,由前两节控制器、路由以及本节的知识,我们可以总结出这个页面的调用流程:

浏览器通过url:“http://localhost:57231/First/Index”发出请求。由RouteConfig.cs解析路由,匹配规则url: "{controller}/{action}/{id}",得出要访问First Controller下的Index Action。然后Index Action返回一个View,其对应的View是在Views文件夹下的First文件夹里的Index.cshtml文件。此文件又加载"~/Views/Shared/_Layout.cshtml"模板,因此返回如下页面,页面中的内容就是模板的内容。

如果View不接受任何参数,那么这个页面只能是一个静态页面。想要在Controller调用View时向其传递参数,就要用到ViewBag。

ViewBag是一个很神奇的东西,它是一个动态对象。简单点说就是你可以给它添加任何属性,这个属性可以是任何类型。

ViewBag的主要用途就是在Controller里给ViewBag添加属性值,并在View中读取这些值并显示出来。

第一步,我们在FirstController.cs中添加一些数据进ViewBag。这些数据类型各不相同。

using System.Collections.Generic;
using System.Web.Mvc;
namespace SlarkInc.Controllers
{
public class FirstController : Controller
{
public ActionResult Index()
{
ViewBag.Number = ;
ViewBag.Message = "This is index Page";
ViewBag.Slarks = new List<string> { "Slark1", "Slark2", "Slark3" };
return View();
}
}
}

然后再Index.cshtml中读取这些数据:

@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
<p>Number: @ViewBag.Number</p>
<p>Message: @ViewBag.Message</p>
@{
foreach (string slark in ViewBag.Slarks){
<p>@slark</p>
}
}

从上面代码中可以看到两种不同的代码,一种是带@{}的Razor代码,另一种是HTML代码。在一个cshtml中,Razor包裹的C#代码会在服务器端执行,执行完毕后再把输出的HTML页面返回到客户端。运行结果如下。

可以看到ViewBag传来的值在View中都显示出来了。

您的推荐和留言是我写作动力,谢谢。

下一节:ASP.NET MVC5 + EF6 入门教程 (5) Model和Entity Framework

最新文章

  1. 【笔记】jquery append,appendTo,prepend,prependTo 介绍
  2. 调用回调函数出现或者大循环出现has triggered a breakpoint
  3. 玩转数据库之 Group by Grouping
  4. Java-HTTP连接时如何使用代理(二)—— Proxy类方式
  5. hdu 4745 动态规划
  6. Widget&#160;only&#160;supports&#160;Widgets&#160;as&#160;children
  7. android图片处理方法(不断收集中)
  8. YUV数据格式
  9. 初学Java ssh之Spring 第四篇
  10. 传感器仿真平台——UI绘制模块(二)
  11. WPF-20:richtextbox相关操作(转)
  12. hdu5418--Victor and World(floyd+状压dp)
  13. CentOS安装python3.6
  14. webix的Form绑定支持数组Array
  15. 初步了解HTTP
  16. 【tmos】spring data jpa 创建方法名进行简单查询
  17. 谈谈《Dotnet core结合jquery的前后端加密解密密码密文传输的实现》一文中后端解密失败的原因
  18. BZOJ1767/Gym207383I CEOI2009 Harbingers 斜率优化、可持久化单调栈、二分
  19. change username on ubuntu.
  20. [Laravel] 11 - WEB API : cache &amp; timer

热门文章

  1. 用pygame学习初级python(二) 15.5.11
  2. [Top-Down Approach] Chatper 4 Notes
  3. 利用注解进行sql反射代码示例
  4. python pyperclip模块的使用
  5. AS开发者转LAYA一周心得
  6. javascript特效——烟花燃放的效果[xyytit]
  7. JS 中如何判断字符串类型的数字
  8. win2008server R2 x64 部署.net core到IIS上出现【Failed to load the dll from [C:\Program Files\dotnet\host\fxr\1.0.1\hostfxr.dll], HRESULT: 0x80070057】错误
  9. Firefox访问https出现 ssl_error_weak_server_ephemeral_dh_key错误
  10. Java操作符