这一节将介绍MVC中的View,包含:如何创建View,传输数据从Controller到View,在View中使用HTML Helpers生成内容。
1、理解View?????
在ASP.NET MVC应用程序中,浏览器地址栏中输入的URL地址在硬盘中没有一个实际的页面对应,对应的是一个View。在ASP.NET MVC应用中,传入浏览器的请求映射到Controller的一个action,大部分时候action返回一个view,也可能执行一个跳转操作,转向到另一个action。
看一个Controller:
using System.Web.Mvc; namespace MvcApplication1.Controllers { ??? [HandleError] ??? public class HomeController : Controller ??? { ??????? public ActionResult Index() ??????? { ??????????? return View(); ??????? } ??????? public ActionResult Details() ??????? { ??????????? return RedirectToAction("Index"); ??????? } ??? } }
当在浏览器地址栏中输入:/Home/Index,将会触发Index() action;输入/Home/Details/,将会触发Details() action。
Index() action返回一个View(),Details() action转向到Index() action。
在Index()中返回的View()指向服务器目录:Views\Home\Index.aspx。
2、添加内容到View
一个view是一个标准的(X)HTML文档,这个文档可以包含脚本,脚本用于添加内容到View中。
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> <!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 id="Head1" runat="server"> ??? <title>Index</title> </head> <body> ??? <div> ??? The current date and time is ??? <% Response.Write(DateTime.Now);%> ??? </div> </body> </html>
动态脚本包含在<%%>中,这种写法在asp中很常见,可以使用=代替Response.Write。
3、使用HTML Helpers生成View的内容
HTML Helper可以方便的用来生成View中的内容,包括文本、输入框、下拉框等。例如:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> <!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 id="Head1" runat="server"> ??? <title>Login Form</title> </head> <body> ??? <div> ??? <% using (Html.BeginForm()) ?????? { %> ??????? <label for="UserName">User Name:</label> ??????? <br /> ??????? <%= Html.TextBox("UserName") %> ??????? <br /><br /> ??????? <label for="Password">Password:</label> ??????? <br /> ??????? <%= Html.Password("Password") %> ??????? <br /><br /> ??????? <input type="submit" value="Log in" />??????? ??? <% } %> ??? </div> </body> </html>
使用了BeginForm(), TextBox() 和Password() 用来生成form、输入框、密码框等。当然可以完全不使用Html Helpers,例如:
<%@ 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 id="Head1" runat="server"> ??? <title>Login Form without Help</title> </head> <body> ??? <div> ??? <form method="post" action="/Home/Login"> ??? <label for="userName">User Name:</label> ??? <br /> ??? <input name="userName" /> ??? <br /><br /> ??? <label for="password">Password:</label> ??? <br /> ??? <input name="password" type="password" /> ??? <br /><br /> ??? <input type="submit" value="Log In" /> ??? </form> ??? </div> </body> </html>
如果有兴趣还可以自己定义Html Helpers,拓展更多的输出样式。
4、使用View Data传递数据给View
view data就像邮寄一个包裹,所有的数据从controller传送到View,必须使用view data。
using System.Web.Mvc; namespace MvcApplication1.Controllers { ??? public class ProductController : Controller ??? { ??????? public ActionResult Index() ??????? { ??????????? ViewData["message"] = "Hello World!"; ??????????? return View(); ??????? } ??? } }
ViewData是一个键值对的集合,当Index()返回View()时,view data自动传送到view。
在输出ViewData中的数据时,可以使用:
<%= Html.Encode(ViewData[“message”]) %>
Html.EnCode将会编码特殊的字符,如:< >,可以防止javascript攻击等,建议总是使用。
OK,这节到这里结束了。
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论