1.模板页
(1) @Styles.Render()方法
在页面上可以用@Styles.Render("~/Content/css")来加载css
首先要在App_Start 里面BundleConfig.cs 文件里面 添加要包含的css文件
BundleConfig就是一个微软新加的 一个打包的配置类
模板中:
@Styles.Render("~/Content/css")
添加配置:
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/site.css"));
这样就可以用一段代码加载多个CSS文件了
同理,加载js文件:
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
(2)@RenderSection()和 @RenderBody()
HelperResult RenderSection(string name)
但是当如果使用了_Layout.cshtml做母版页的页没有实现Section的话,就会抛出异常,这是因为在_Layout.cshtml中使用的是@RenderSection(“SubName”),他要求所有子页都要实现。
HelperResult RenderSection(string name, bool required = true)
其中,required默认为true表示引用这个布局页的所有View必须含有该 Section ,设为false则为可以有,也可以没有。
模板页:
@RenderSection("scripts", required: false)
页面使用:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
@RenderBody()
呈现子页的主体内容
(3)Partial, RenderPartial, Action,RenderAction
Partial 和RenderPartial:
这两个的性质都是一样, 只指把一个个View给镶入进来, 只是回传值有点不一样
Partial 回传的一个Object (MvcHtmlString), 回传一个String 把一堆Html给回传出来, 然后写进到主页面上
@Html.Partial("ViewName")
RenderPartial 回传的是void, 而这个方法会在主页面上添加指定的View
@{
Html.RenderPartial("ViewName");
}
这两个方法没有用到Controller, 是直接把一个View(Page) 给加进来,所以只能加载静态页面
Html.Action()/@Html.RenderAction()
和Partial与RenderPartial类似,但是因为会通过Action,所以更灵活,可以利用控制器上下文。
在Action中可以通过IsChildAction来判断是被Url直接调用还是被Action()/RenderAction()调用
可以利用重载直接参数给Action。
Action中使用return PartialView()指定分部视图,在_ViewStatrt.cshtml中指定的Layout会无效。
@{Html.RenderAction("ViewUserControl1");}
@Html.Action("ViewUserControl1")
Controller:
[ChildActionOnly]//防止直接调用
public ActionResult ViewUserControl1()
{
ViewBag.Test = "(Action)调用";
return PartialView();
}
(4)Html.ActionLink
参考 http://www.cnblogs.com/Relict/archive/2012/04/27/2473340.html