1.1.ASP.NET MVC表單的使用
表單<form>是html里面一個非常常用的標簽,這里的屬性就不過多介紹;
這里主要講<form>表單在MVC5中的使用及框架輔助BeginForm的使用:
①首先創建一個View層下面的<form>標簽,使用正常形式的跳轉方式;
<form action="/Home/About" method="get"> <input type="text" name="username" /> <input type="submit" value="搜索" /> </form>
上面跳轉會到HomeController下面的About方法,傳遞username引數,并在
@ViewBag.Message上進行顯示;
public ActionResult About(string username) { ViewBag.Message = username; return View(); }

2.1.1.HTML.BeginForm輔助方法
Html.BeginForm方法代替了我們html中的form標簽,更好地配合了MVC框架使用,下面用Html.BeginForm方式替換<form>標簽,功能和<form>的action進行跳轉一致:
語法如下:
Html.BeginForm(“方法”, “mvc控制器名稱”, Method)
下面代碼與普通<form>標簽的執行方式一致:
@using (Html.BeginForm("About", "Home", FormMethod.Get)) { <input type="text" name="username" /> <input type="submit" value="搜索" /> }
2.2.ASP.NET MVC表單屬性的添加
<form action="/Home/About" method="get" target="_blank"> <input type="text" name="username" /> <input type="submit" value="搜索" /> </form> <!--使用輔助的方式添加屬性target:與上面的target方法相同--> @using (Html.BeginForm("About", "Home", FormMethod.Get, new { target = "_blank" })) { <input type="text" name="username" /> <input type="submit" value="搜索" /> }
2.3.HTML.Hidden()方法
使用HTML.Hidden()方法可以隱藏控制元件,在頁面上不進行顯示,
語法:@Html.Hidden(“控制元件名稱”, “控制元件值”)
@using (Html.BeginForm("About", "Home", FormMethod.Get, new { target = "_blank" })) { <!--Html.Hidden:使用隱藏的控制元件--> @Html.Hidden("h1", "我是隱藏的h1控制元件"); <input type="text" name="username" /> <input type="submit" value="搜索" /> }

2.4.HTML.Lable()和HTML.TextBox()
<!--Html.Label:Lable文本控制元件和Html.TextBox:文本框控制元件--> @Html.Label("lb1", "姓名:") @Html.TextBox("tb1", "")

2.5.HTML.DropDownList()和HTML.ListBox()
①先添加前臺界面層DropDownList資料ViewData[“items”]:
<div> @Html.Label("lb2", "性別:") @Html.DropDownList("ddl1", ViewData["items"] as List<SelectListItem>, "請選擇") </div>
②對應Controller控制器方法Index(),需要注意系結的資料必須和前臺一一對應起來:
public class MyDefineController : Controller { // GET: MyDefineController01 public ActionResult Index() { List<SelectListItem> list = new List<SelectListItem>(); SelectListItem s1 = new SelectListItem(); s1.Text = "男"; s1.Value = "https://www.cnblogs.com/yif0118/p/1"; SelectListItem s2 = new SelectListItem(); s2.Text = "女"; s2.Value = "https://www.cnblogs.com/yif0118/p/2"; list.Add(s1); list.Add(s2); ViewData["items"] = list; return View(); } }
③啟動服務器,顯示效果如下:

④同理更改為ListBox,顯示界面如下:
@Html.("ddl1", ViewData["items"] as List<SelectListItem>, "請選擇")

2.6.HTML.Password()
①HTML.Password()用于創建密碼顯示框,具體前臺設定如下:
<div> <!--Html.Label:Lable文本控制元件和Html.TextBox:文本框控制元件--> @Html.Label("lb1", "用戶名:") @Html.TextBox("username", "") </div> <div> @Html.Label("lb2", "密碼:") @Html.Password("password", "") </div>
②Controller層接收請求引數,跳轉后展示頁面:
public ActionResult About(string username, string password) { ViewBag.Message = "用戶名:" + username + ",密碼:" + password; return View(); }


2.7.HTML.RadioButton()和HTML.CheckBox()
RadioButton表示單選框;CheckBox表示復選框;
具體操作如下:
前臺.cshtml界面:
<div> @Html.Label("lb3", "學校:") @Html.RadioButton("rb1", "山東大學")山東大學 @Html.RadioButton("rb1", "清華大學")清華大學 @Html.RadioButton("rb1", "北京大學")北京大學 </div> <div> @Html.Label("lb3", "愛好:") @Html.CheckBox("cb1", false)足球 @Html.CheckBox("cb2", false)籃球 @Html.CheckBox("cb3", false)乒乓球 </div>
后臺Contoller引數接收:
public ActionResult About(string username, string password, string rb1, bool cb1, bool cb2, bool cb3) { string hobby = string.Empty; if (cb1) hobby += "足球 "; if(cb2) hobby += "籃球 "; if (cb3) hobby += "乒乓球 "; ViewBag.Message = "用戶名:" + username + ",密碼:" + password + ",學校:" + rb1 + "愛好:" + hobby; return View(); }
顯示效果如下:


2.8.HTML.ActionLink()和HTML.RouteLink()
Html.ActionLink():主要是替換a標簽,使用方法:
@HTML.ActionLink(“鏈接顯示內容”, “方法”, “控制器名稱”)
Html.RouteLink():主要是設定路由,使用方法:
@HTML.RouteLink(“鏈接顯示”, new{action=”路由”})
具體使用:
<div> @Html.ActionLink("注冊", "Contact", "Home") <!--注意:RouteLink指定路由的方式是new { Action = "../Home/Index" }--> @Html.RouteLink("忘記密碼", new { Action = "../Home/Index" }) </div>
界面顯示:

跳轉:


2.8.1.URL輔助方法
n Action方法
n Content方法
n RouteUrl方法
Action:與ActionLink非常相似,他回傳的是鏈接地址
Content:可以將相對路徑轉換為絕對路徑
RouteUrl:同樣是回傳鏈接地址,接受引數是路由
<div> @Url.Action("Contact", "Home")---- @Url.Content("../Home/Index")---- @Url.RouteUrl(new { Action = "../Home/Index" }) </div>
顯示效果:

2.9.Html.Partial()和Html.RenderPartial()
@Html.Partial用于將分部視圖渲染為字串;
使用方式:
@Html.Partial(“視圖名稱”, Model, ViewDataDictionary)
實體:
①在Test檔案夾下新建MVC5 分布頁(Razor),

②在Index.cshtml中可以使用@Html.Partial()
<!--視圖引入模型--> @using WebApplication01.Models; @model IEnumerable<Class1> @{ ViewBag.Title = "Index"; } @Html.Partial("_PartialPage1", new Class1 { name = "1", value = "https://www.cnblogs.com/yif0118/p/小明"}, new ViewDataDictionary() { {"學校", "山東大學" }, { "班級", "大一三班"} }); <h2>Index</h2>
③在_PartialPage1.cshtml分布頁中設定ViewData字典進行取值:
@model WebApplication01.Models.Class1 <div> 姓名 @Model.value 學校 @ViewData["學校"] 班級 @ViewData["班級"] </div>
注意對應的controller中的Index路由方法中View必須和Class1視圖Model不能沖突,
@{Html.RenderPartial}將分布視圖直接寫入回應輸出流,所以只能直接放在代碼塊中,不能放在運算式中(回傳值是void);
用法:
@{Html.RenderPartial(視圖名稱, Model, ViewDataDictionary)}
2.10.ViewBag、ViewData和ViewDataDictionary
①ViewBag和ViewData是已經實體化的物件,可以直接使用,
②ViewDataDictionary是視圖字典類,
③ViewBag和ViewData,都是從ViewDataDictionary 實體化而來
④ViewBag是ViewData的動態封裝
ViewBag與ViewData的使用:
<div> @ViewBag.name </div> <div> @ViewData["name1"] </div>
public class TestController : Controller { // GET: Test public ActionResult Index() { ViewBag.name = "測驗ViewBag"; ViewData["name1"] = "測驗ViewData"; //注意這里的name不能重復,否則會覆寫ViewBag的值 return View(); } }
ViewDataDictionary的使用:
@{ ViewBag.Title = "Index"; ViewDataDictionary pairs = new ViewDataDictionary(); pairs.Add("key", "測驗ViewDataDic"); } <div> @pairs["key"] </div>
2.11.Html.Action()和Html.RenderAction()
① Html.Action()的語法:
n @Html.Action(“方法”, “控制器”)
示例:
@Html.Action("Contact", "Home", new { name = "老張" })
可以在其它頁面View上呼叫其它Controller上的方法并進行引數傳遞顯示:


②Html.RederAction()的語法:
n @{Html.RenderAction(“方法”, “控制器”)}
和Html.Action()實際結果一致,只是語法不同,
示例:
@{Html.RenderAction("Contact", "Home", new { name = "老張" });}

2.12.強制型別輔助方法
強制型別輔助方法,主要是用來系結模型屬性的方法,
在普通輔助方法后面加上For就是強制型別輔助方法,
使用方式:
@Html.TextBoxFor(Model -> Model.屬性)
示例使用:
①在Model層創建一個Stuent類如下:
public class Student { //表示可以在前臺展示姓名欄位 [DisplayName("姓名")] public string name { get; set; } [DisplayName("性別")] public string sex { get; set; } [DisplayName("年齡")] public string age { get; set; } }
②在Controller層傳遞Model,并可以設定屬性的值:
public class TestController : Controller { public ActionResult Contact() { //使用Controller路由傳遞Model Student var student = new Student(); student.name = "yif"; student.sex = "男"; student.age = 24; return View(student); } }
③通過路由跳轉到Contact界面.cshtml中,使用LabelFor、TextBoxFor進行資料展示如下圖:
<div> @Html.LabelFor(Model => Model.name) @Html.TextBoxFor(Model => Model.name) </div> <div> @Html.LabelFor(Model => Model.sex) @Html.TextBoxFor(Model => Model.sex) </div> <div> @Html.LabelFor(Model => Model.age) @Html.TextBoxFor(Model => Model.age) </div>

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/90.html
標籤:ASP.NET MVC
