一:重载方法的调用
二:数据的传递
三:生成控件
四:显示加载视图
五:强类型视图
六:@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的错误,欢迎指出。不喜勿喷!