您的位置:首页 > 其它

.NET MVC5自带模板方法功能解析(1)

2016-11-07 11:32 162 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mvc .net