一:重載方法的調用
二:數據的傳遞
三:生成控件
四:顯示加載視圖
五:強類型視圖
六:@Response.Write() 和 @Html.Raw()區別
七:視圖中字符串的輸入
八:模板頁
同一個控制器內的同名方法調用,可以用HttpGet 和HttpPost區分。
[HttpGet]public void request(int id = 0){ Response.Write("get 請求成功~");}[HttpPost]public void request(Models.Classes c = null){ Response.Write("post 請求成功~取到值:" + c.CName + " " + c.CImg);}
控制器向視圖傳遞數據的方法:
1.ViewBag 2.ViewData 3.TempData 4.Model
TempData 不允許添加重復的 key
后臺的賦值:
//1.ViewBag ViewBag.bag = "ViewBagbag"; //2.ViewData ViewData.Add("key", "viewdata"); //3.TempData if (!TempData.Keys.Contains("temp")) TempData.Add("temp", "tempdata"); //不能重復 添加 相同的 鍵 //4.Model Models.Classes cl = new Models.Classes() { CName = "model name" }; //數據 return View(cl);
前臺的取值:
ViewBag : @ViewBag.bag<br />ViewData : @ViewData["key"]<br />TempData : @TempData["temp"]<br /> 強類型視圖: @Model.CName<br />
這里要說的是,Model 類型的值 其實等效于 ViewData.Model
//4.Model ViewData.Model = new Models.Classes() { CName = "ViewData.Model" };//等效于Models.Classes cl = new Models.Classes() { CName = "model name" }; //數據return View(cl);
前臺視圖 可以 通過 @Html.DropDownList 綁定后臺ViewData數據 生成下拉框控件
后臺代碼:
ViewData.Add("myselect", new List<SelectListItem>() { new SelectListItem() { Text = "值2", Value = "zhier" }, new SelectListItem() { Text = "值1", Value = "zhiyi" }});
前臺視圖:
生成下拉框控件:@Html.DropDownList("myselect", "值一")
網頁源碼:
<select id="myselect" name="myselect"><option value="">值一</option><option value="zhier">值2</option><option value="zhiyi">值1</option></select>
視圖加載可以分為 默認加載與控制器同名的 視圖, 也可以顯示加載自己指定的 視圖。
public ActionResult setData(){ return View(); //加載默認 ActionResult 方法 同名的 視圖 setData.cshtml //return View("Index"); // 顯示加載 Index.cshtml 視圖 注意:不要帶后綴 .cshtml}
在視圖頁面 定義 model 強類型 ,這樣可以方便 編譯器 給出 只能提示 ,僅此而已。
@model _1MVC學習.Models.Classes強類型視圖: @Model.CName
前臺:
Html.Raw:@Html.Raw("Html.Raw")<br />Response.Write: 這里輸出到最上面了@{ Response.Write("Response.Write輸出~");}
頁面源碼:
Response.Write輸出~<!DOCTYPE html><html><head> <meta name="viewport" content="width=device-width" /> <title>setData</title></head><body> <div> Html.Raw: Html.Raw <br /> Response.Write: 這里輸出到最上面了
在視圖頁面Razor語法 輸入 “純”字符串 方法:
1. <text>標簽 2.@:
@{ <text>字符串一</text>}<br />字符串二<br />@{ @:字符串三}
頁面源碼沒有任何標簽 包住
字符串一 <br /> 字符串二 <br /> 字符串三
在添加視圖的時候 選擇 勾選 使用布局或模板頁
使用了模板頁的視圖:
@{ //標題 ViewBag.Title = "mby"; }<h2>我使用了模板頁</h2>@*
這里是注釋 @section 可以指定使用哪個“部分” 對應 模板頁 的位置 @RenderSection("hhh", required: false) required 是否為必須填入 除了 @section 的其余部分 全部填充到 模板頁的 @RenderBody() 位置*@@section hhh{ 我只是一個小坑而已啦~~~}
模板頁代碼(_Layout.cshtml):
<!DOCTYPE html><html><head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> <title>@ViewBag.Title</title></head><body> <h1>模板頁</h1> @RenderBody() @RenderSection("hhh", required: false) </body></html>
說明:此類文章僅供本人學習記錄使用。如有2B的錯誤,歡迎指出。不喜勿噴!
新聞熱點
疑難解答