뷰 이해
ASP.NET MVCASP.NET 또는 ASP(Dynamic Server Pages)와 달리 페이지 항목에 직접적으로 해당하는 항목이 없습니다. . ASP.NET MVC 응용 프로그램에는 브라우저 주소 표시줄에 입력한 URL 경로에 해당하는 페이지가 디스크에 없습니다. ASP.NET MVC 애플리케이션에서 페이지에 가장 가까운 것은 뷰 입니다.
ASP.NET MVC 애플리케이션에서 들어오는 브라우저 요청은 컨트롤러 작업에 매핑됩니다. 컨트롤러 작업은 뷰를 반환할 수 있습니다. 그러나 컨트롤러 작업은 사용자를 다른 컨트롤러 작업으로 리디렉션하는 등 일부 유형의 작업을 수행할 수 있습니다.
코드 목록 1에는 HomeController라는 간단한 컨트롤러가 포함되어 있습니다. HomeController는 index() 및 세부정보()라는 두 가지 컨트롤러 작업을 노출합니다.
代码清单1 - HomeController.cs 使用系统; 使用 System.Collections.Generic; 使用 System.Linq; 使用 System.Web; 使用 System.Web.Mvc; 命名空间 MvcApp.Controllers{ [HandleError] public class HomeController:Controller { public ActionResult Index() { return View(); } public ActionResult Details() { return RedirectToAction( “Index”); } }}
브라우저의 주소 표시줄에 다음 URL을 입력하여 첫 번째 작업인 index() 작업을 호출할 수 있습니다.
/首页/index
다음을 수행할 수 있습니다. 두 번째 작업인 Details() 작업은 브라우저에 다음 주소를 입력하여 호출됩니다.
/Homepage/Details
index() 작업은 보기를 반환합니다. 생성하는 대부분의 작업은 보기를 반환하지만 작업은 모든 유형의 작업 결과를 반환할 수 있습니다. 예를 들어, 세부사항() 작업은 수신 요청을 index() 작업으로 리디렉션할 수 있는 RedirectToActionResult를 반환합니다.
index() 작업에는 다음 코드 줄이 포함되어 있습니다.
return View();
이 코드 줄은 뷰를 반환하고 뷰 경로는 서버는 다음과 같은 경로여야 합니다.
홈 페이지의 View Index.aspx
뷰의 경로는 컨트롤러 및 컨트롤러 작업의 이름에서 유추됩니다.
원하는 경우 뷰를 명시적으로 지정할 수 있습니다. 다음 코드 줄은 "Fred"라는 뷰를 반환합니다.
return view("Fred");
이 코드 줄이 실행되면 다음 경로에서 뷰가 반환됩니다.
홈페이지 Fred.aspx 보기
2. 뷰 만들기
오른쪽- 솔루션 브라우저에서 폴더를 클릭하고 "추가", "새 프로젝트" 메뉴 항목을 선택합니다(그림 1). 프로젝트에 표준 보기를 추가하려면 "MVC 보기 페이지" 템플릿을 선택하세요.
ASP.NET 또는 ASP 애플리케이션에서처럼 프로젝트에 뷰를 마음대로 추가할 수 없다는 점을 알아야 합니다. 컨트롤러 접미사 없이 컨트롤러와 동일한 이름을 가진 폴더에 뷰를 추가해야 합니다. 예를 들어 index라는 새 뷰를 생성하려면 ProductController라는 컨트롤러가 반환된 다음 뷰를 생성하면 됩니다. 이 보기를 프로젝트의 다음 폴더에 추가해야 합니다.
제품 Index.aspx 보기
보기가 포함된 폴더의 이름은 다음과 같아야 합니다. 컨트롤러의 이름을 반환합니다. 이 견해에 해당합니다.
3. 뷰에 콘텐츠 추가
뷰는 스크립트를 포함할 수 있는 표준(X) HTML 문서입니다. 스크립트를 사용하여 보기에 동적 콘텐츠를 추가합니다.
예를 들어 목록 2의 뷰에는 현재 날짜와 시간이 표시됩니다.
코드 목록 2 - 뷰 홈 Index.aspx
<%@ Page Language =“C#”AutoEventWireup =“true”CodeBehind =“Index.aspx.cs”Inherits =“MvcApp.Views.Home.Index”%> <!DOCTYPE html PUBLIC“ - // W3C // DTD XHTML 1.0 Transitional // EN“”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“> <html xmlns =”http://www.w3.org/1999/xhtml“> <头RUNAT = “服务器”> <TITLE>索引</ TITLE> </ HEAD> <BODY> <DIV> 的当前日期和时间是: <%回复于(DateTime.Now);%> </ DIV> </ body> </ html>
목록 2의 HTML 페이지 본문에는 다음 스크립트가 포함되어 있습니다.
<%Response.Write(DateTime.Now);%>
스크립트 구분 기호 <를 사용하세요. ;% 및 %>는 스크립트의 시작과 끝을 표시합니다. 이 스크립트는 C#으로 작성되었습니다. 현재 날짜와 시간을 표시하고 reply() 메서드를 호출하여 브라우저 스크립트에 콘텐츠를 렌더링합니다. 구분 기호 <% 및 %>는 하나 이상의 명령문을 실행하는 데 사용될 수 있습니다.
Reply to () 메소드를 자주 호출하기 때문에 Microsoft에서는 Reply to () 메소드를 호출하는 간단한 방법을 제공하고 있습니다. 목록 3의 보기는 reply() 메소드를 호출하는 간단한 방법으로 <%= 및 %>를 사용합니다.
코드 목록 3 - 뷰 홈 Index2.aspx
<%@ Page Language =“C#”AutoEventWireup =“true”CodeBehind =“Index2.aspx.cs”Inherits =“MvcApp.Views.Home.Index2”%> <!DOCTYPE html PUBLIC“ - // W3C // DTD XHTML 1.0 Transitional // EN“”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“> <html xmlns =”http://www.w3.org/1999/xhtml“> <头RUNAT = “服务器”> <TITLE>索引2 </ TITLE> </ HEAD> <BODY> <DIV> 的当前日期和时间是: <%= DateTime.Now%> </ DIV> </ BODY> < / HTML>
모든 .NET 언어를 사용하여 뷰에서 동적 콘텐츠를 생성할 수 있으며 Visual Basic.Net 또는 C#을 사용하여 컨트롤러 및 조회수.
4. HTML 도우미를 사용하여 보기 콘텐츠 생성
为了使向视图中添加内容更加容易一些,你可以利用叫做HTML Helper的东西.HTML Helper是一个生成字符串的方法。你可以使用HTML帮助者来生成标准的HTML元素,例如文本框,链接,下拉框和列表框。
举个例子,代码清单4中的视图利用了两个HTML Helpers,TextBox()和Password(),用于生成一个登录窗体(见图2)。
代码清单4 - \ Views \ Home \ Index3.aspx
<%@ Page Language =“C#”AutoEventWireup =“true”CodeBehind =“Index3.aspx.cs”Inherits =“MvcApp.Views.Home.Index3”%> <!DOCTYPE html PUBLIC“ - // W3C // DTD XHTML 1.0 Transitional // EN“”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“> <html xmlns =”http://www.w3.org/1999/xhtml“> <head runat =“server”> <title>登录表单</ title> </ head> <body> <p> <form method =“post”action =“/ Home / Login”> <label for =“userName” >用户名:</ label> <br /> <%= Html.TextBox(“userName”)%> <br /> <br /> <label for =“password”>密码:</ label> <br /> <%= Html.Password(“password” %> <br /> <br /> <input type =“submit”value =“登录”/> </ form> </ p> </ body> </ html><br /> <%= Html.Password( “密码”)%> <br /> <br /> <INPUT TYPE = “提交”值= “登录”/> </ FORM> </ DIV> </ body> </ html><br /> <%= Html.Password( “密码”)%> <br /> <br /> <INPUT TYPE = “提交”值= “登录”/> </ FORM> </ DIV> </ body> </ html>
所有的HTML帮助者方法都在视图的Html属性上调。举个例子,你可以通过调用Html.TextBox()方法来呈现(render)一个文本框。
注意,当你在调用HTML Helper时,必须使用脚本分隔符<%=和%>。HTML Helper只是返回一个字符串你需要调用Response.Write()来将字符串呈现到浏览器中。
使用HTML帮助方法是可选的。它们通过减少你编写的HTML和脚本数量来使开发更为简单。代码清单5中的视图呈现了与代码清单4中完全相同的窗体,但是没有使用HTML助手。
代码清单5 - \ Views \ Home \ Index4.aspx
<%@ Page Language =“C#”AutoEventWireup =“true”CodeBehind =“Index4.aspx.cs”Inherits =“MvcApp.Views.Home.Index4”%> <!DOCTYPE html PUBLIC“ - // W3C // DTD XHTML 1.0 Transitional // EN“”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“> <html xmlns =”http://www.w3.org/1999/xhtml“> <head runat =“server”> <title>没有帮助的登录表单</ title> </ head> <body> <p> <form method =“post”action =“/ Home / Login”> <label for = userName“>用户名:</ label> <br /> <输入名称= “userName的”/> <br /> <br /> </标签>:密码<用于= “密码”的标签> <br /> <输入名称= “密码”类型= “密码”/> < br /> <br /> <input type =“submit”value =“登录”/> </ form> </ p> </ body> </ html></标签> <br /> <输入名称= “密码”类型= “密码”/> <br /> <br /> <INPUT TYPE = “提交”值= “登录”/> </ FORM> < / p> </ body> </ html></标签> <br /> <输入名称= “密码”类型= “密码”/> <br /> <br /> <INPUT TYPE = “提交”值= “登录”/> </ FORM> < / p> </ body> </ html>/ body> </ html>/ body> </ html>
你可以创建自己的HTML帮助者。据个例子,你可以创建一个GridView()Helper方法,它自动地在一个HTML表格中显示一系列的数据库记录。我们将在创建自定义HTML帮助者这篇教程中探讨这一话题。
5.使用ViewData属性将数据传递给视图
你可以使用视图的另一个属性,ViewData的属性,将数据从控制器传递给视图。例如,代码清单6中的控制器向ViewData的添加了一条消息。
代码清单6 - ProductController.cs
使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用System.Web; 使用System.Web.Mvc; namespace MvcApp.Controllers { public class ProductController:Controller { public ActionResult Details() { ViewData [“message”] =“Hello World!”; return View(); } } }
控制器的ViewData属性代表着一个名称/值对的集合。在代码清单6中,详细()方法向ViewData集合中添加了一个名为消息的项,其值为“Hello World!”当视图由详情()方法返回时,ViewData的将会自动传递给视图。
代码清单7中的视图从ViewData的中获取了消息,并且将消息呈现到了浏览器中。
代码清单7 - \ Views \ Product \ Details.aspx
<%@ Page Language =“C#”AutoEventWireup =“true”CodeBehind =“Details.aspx.cs”Inherits =“MvcApp.Views.Product.Details”%> <!DOCTYPE html PUBLIC“ - // W3C // DTD XHTML 1.0 Transitional // EN“”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“> <html xmlns =”http://www.w3.org/1999/xhtml“> <头RUNAT = “服务器”> <TITLE>产品详细信息</ TITLE> </ HEAD> <BODY> <DIV> <%=了Html.Encode(计算机[ “消息”])%> </ DIV> </ BODY > </ html>
注意到当前呈现消息时,视图利用了Html.Encode()Helper方法.Html.Encode()HTML Helper方法将例如“”这样的特殊字符编码为在网页面中能够安全显示的字符。无论何时呈现用户提交到网站的内容时,你都应该对内容进行编码,以避免的JavaScript注入攻击。
(因为我们自己在ProductController的中创建了消息,所以并不是真的需要对消息进行编码。然而,当在视图中显示获取自的ViewData中的内容时,总是调用了Html.Encode()是一个很好的习惯。)
在代码清单7中,我们利用了的ViewData来将一个简单的字符串消息从控制器传递到了视图。你也可以使用的ViewData将其他类型的数据从控制器传递到视图,例如一个数据库记录集合。举个例子,如果你想要在视图中显示产品数据库表的内容,那么你可以将数据库记录的集合保存在ViewData的中进行传递。
你也可以从控制器向视图传递强类型查看数据。我们将在教程“理解强类型查看数据和视图”中探讨这个话题。
总结
这篇教程提供了对ASP.NET MVC视图,视图数据(查看数据)和HTML帮助者的一个简短的介绍。在第一部分,你学习了如何向项目中添加新的视图你学习了必须将视图添加到正确的文件夹中,以使其能够被特定的控制器调用。接下来,我们讨论了HTML帮助者这一主题。你学习了HTML帮助者是如何轻松地生成标准的HTML内容的最后,你学习了如何利用ViewData将数据从控制器传递给视图。
【相关推荐】
1. 什么是ASP.NET MVC ?总结ASP.NET MVC
2. 详细介绍ASP.NET MVC--控制器(controller)
5. asp.net mvc를 통해 WeChat 사용자 정의 메뉴 편집 도구를 개발하는 코드 예
위 내용은 ASP.NET MVC에 대한 자세한 소개--보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!