博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC3基础嵌套总结
阅读量:4983 次
发布时间:2019-06-12

本文共 1885 字,大约阅读时间需要 6 分钟。

      MVC3 Razor出现后我们就可以选择不再使用asp.net master 模板页。取而代之的是cshtml razor的模板文件。用法个人认为还是和master模板页类似。但在mater模板页的原有功能上有了进一步扩展,更方便开发。

新建MVC3项目的时候会在View中自动生成_ViewStart.cshtml文件(功能:每个页面加载的时候都会加载这个文件中引用页面(自动生成的模板页)),我们就无需在每一个具体的View页面引入模板页。减少View页面内的重复代码。具体的可以建立一个MVC3 Application 选择razor模板,VS会自动建立上述机制。你也可以自己定义自己的布局页面 如:在Shared文件夹中新建_MyLayout.cshtml页面 将_ViewStart.cshtml文件中的地址改为:

@{

    Layout = "~/Views/Shared/_MyLayout.cshtml";
}

启动的时候就会加载你定义的页面,这样就可以做一个功能如:根据不同的角色或者用户加载不同的布局页面。

小技巧 : 在 ASP.NET MVC3 中,如果一个在View文件夹或Shared文件夹中的视图以"_"开头命名的话,外部是不能单独访问他的,他只能作为局部视图嵌套在其他视图中。为什么?我只能这样解释 因为MVC3的加载机制过程是: 执行Controller → Model → View+_ViewStart.cshtml的顺序,然后把产生的页面带回到原来的View中再回传。

1,@RenderBody()方法:直接渲染整个View到占位符处,而不需要原来所使用的,只能在_Layout.cshtml中使用一次

2,@RenderSection方法。可以让我们在模板页预设一个区域,未来给继承该模板页的View使用。具体请看以下操作:

在MVC3.0 shared文件夹下_Layout.cshtml这个模板文件内加入以下代码:

<!DOCTYPE html>

<html>
<head>
    <title>@ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
    @RenderSection("Head", required: false) //当为true的时候 每一个页面都要加@section Head{
内容} 这个标签,不然就报错。
</head>
<body>
<div class="page">

以上代码第7行,预留出一个Head的section。 熟悉模板页的人,应该明白该处是预留是给未来具体的

View页面自定义特定js/css使用的。

这个View我们就用默认的Home底下的Index来举例。打开index.cshtml 写入以下代码

@{

    ViewBag.Title = "Home Page";
}
<h2>@ViewBag.Message</h2>
@section Head{
    <script type="text/javascript">
        $(function () {
            alert("hello jquery");
        });
    </script>
}

该View已经集成了_Layout.cshtml模板页,这里只是填充模板页内的Head section这时就可以加入我们的针对每个view页面的js或者CSS了。至此达到共性外的个性。

只要你在_Layout.cshtml模板页面加了  @RenderSection("Head", required: true) ,required参数值:true 时候,一定要在其他的视图页面加上

@section Head{

    <script type="text/javascript">
        $(function () {
            alert("hello jquery");
        });
    </script>
}
注意可以随便添加在哪里都可以的,Head为自定义标签 可以自己改动 。未完待续。。。。。。

转载于:https://www.cnblogs.com/mistor/archive/2012/08/23/2652745.html

你可能感兴趣的文章
bzoj 1067: [SCOI2007]降雨量
查看>>
利用Flume将本地文件数据中收集到HDFS
查看>>
html5的优缺点
查看>>
wget下载文件
查看>>
Swagger使用--在一个Controller中使用相同(类似)参数的方法
查看>>
Vim 加 Gmail 变身 Vmail
查看>>
P1294 高手去散步
查看>>
IOS用IB快速适配iPhone5
查看>>
一次谷歌面试趣事
查看>>
(Z)使用mp4v2将H264+AAC合成mp4文件
查看>>
HDU 1735 字数统计(模拟+一点点贪心的思想)
查看>>
因为smb和nfs挂掉导致客户端开机启动不了
查看>>
Python百题计划
查看>>
(5) Orchard 开发之 Localization and NullLocalizer
查看>>
分类算法(1)--KNN
查看>>
每日记载内容总结3
查看>>
ajax等待请求
查看>>
NTP协议详解
查看>>
Java学习之equals和hashcode的关系
查看>>
问题-delphi XE2 Stack Overflow- save your work and restart CodeGear
查看>>