快捷搜索:  test  as

【ASP.NET MVC 5】四、将数据从控制器传递给视图示

在我们评论争论数据库和数据模型之前,让我们先评论争论一下若何将数据从节制器通报给视图。节制器类将相应哀求来的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();

}}

}

在 “指定项名称 (Specify Name for Item )” 对话框, 输入” Welcome”, 点击“确定(OK)”.

在“选择结构(the Select a Layout Page)”对话框,吸收缺省的”结构_Layout.cshtml”,并点击“确定(OK)”.

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

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

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

您可能还会对下面的文章感兴趣: