MVC4 学习小知识

版权所有,禁止匿名转载;禁止商业使用。

// 一、 页面链接构造
        //在 View 中生成超级链接有多种方式: /AdminStore/StoreProduct?rd=15
        //<a href="@Url.Action("StoreProduct", "StoreHome", new { rd = "15" })" >到产品页</a>  
        //@Html.ActionLink("产品页ActionLink", "StoreProduct", new { rd = "15" })
        //<%: Html.RouteLink("人员查询", new { controller = "Persons", action = "Query", name = "Bob" })%>
        //在 Action 中,可以使用 RedirectTo 来调转至新的页面:
        //return RedirectToAction("Query", "Persons", new { name = "Bob" });
        //return RedirectToRoute(new { controller = "Persons", action = "Query", name = "Bob" });

        //二、 页面与用户控件、数据调用
        //1.RenderPatial的数据来自于调用的View,而RenderAction调用时同时赋值。
        //2.RenderAction会发起一个新的Request,而RenderPatial不会。

        //Html.RenderPartial("YourPartialView", YourData);
        //YourData是一个可选的参数
        //Html.RenderAction("Show", "Tag");

        //三、嵌套 母版
        //@RenderBody() 这个方法不需要参数,而且只能出现一次。
        //@RenderPage(“~/Views/Shared/_Header.cshtml”)   直接调用公用文件
        //@RenderSection(“footer”, false)  @section footer {     Footer Here  }   false指的是可以为空

        //四、Root路由规则
        // 1、Action或者Controller 任何一个不设定规则匹配及对应到实际类中都无法访问
        // 如 /{controller}/{action}/ 实际 /StoreHome/NewsAdd/ ,则  StoreHome在 VIEW中必须对应StoreHome文件夹
        // NewsAdd 在VIEW中要有NewsAdd.cshtml,在StoreHome中要有  public ActionResult NewsAdd() {    return View();}

        //五、页面传值  ViewBag ViewData  TempData
        // ViewBag其实本质就是ViewData,只是多了层Dynamic控制。所以,使用何种方式完全取决于你个人的爱好。
        //TempData: 保存在session中,controller每次执行请求时,会从Session中获取Tempdata(),而后清除session,
        //获取完TempData数据,虽然保存在内部字典中。但字典中每个条目访问一次后就从字典中删除。因此Tempdata数据最多只能经过一次controller传递,并且每个元素最多只能访问一次。
        //添加编辑一个页面时用 @Html.HiddenFor(model => model.NewsID) 隐藏即可

        //六、@Html.Raw('<font color='red'>红字</font>'),就会显示出红色的”红字“;
        // MvcHtmlString  控制层直接返回HTML代码

        //七、交互操作  Modalview:就是会弹出一个view,你只能在该view上操作,而不能切换到其他view,除非你关闭了modalview.
        //ModalView("ModalCancelAdmin", "@(res.CancelManagement)", "@(res.Confirm)");

        //八、清楚缓存 OutputCache  [OutputCache(Duration=10,Location=OutputCacheLocation.ServerAndClient)]
        //VaryByParam,http://localhost:7673/StoreAdmin/StoreMemberListid=1 户请求的参数来决定是否读取缓存。这个参数主要指的就是QueryString   我们希望不要读取缓存,因为参数不一样了。要实现这样的需求,也就是说,希望根据name参数的不同缓存不同的数据。则可以设置VaryByParam="id"。
        //如果有多个参数的话,可以用逗号分开他们。例如 VaryByParam=”name,Id”
        // VaryByHeader,可以根据用户请求中所提供的一些Header信息不同而决定是否读取缓存。
        //VaryByContentEncoding,一般设置为Accept-Encoding里面可能的Encoding名称,从上图也可以看出,Request里面是包含这个标头的。
        //VaryByCustom,则是一个完全可以定制的设置,例如我们可能需要根据用户角色来决定不同的缓存版本,或者根据浏览器的一些小版本号来区分不同的缓存版本,我们可以这样设置:VaryByCustom=”Role,BrowserVersion”,这些名称是你自己定义的,光这样写当然是没有用的,我们还需要在Global.asax文件中,添加一个特殊的方法,来针对这种特殊的需求进行处理。
       
        //九、路由参数的获取
        //1、@this.ViewContext.RouteData.Values["subdomain"]  从页面获取路由的值
        //2、RouteData.Values["subdomain"].ToString(); 从controller 获取路由的值
        //3、自定义类里获取路由的值
        //4、HttpContextBase httpContext = new HttpContextWrapper(HttpContext.Current);
        //   RouteData rd = RouteTable.Routes.GetRouteData(httpContext);
        //   return rd.Values["action"].ToString();


0 0