ASP.NET MVC载入页面常用方法

@RenderBody

在Razor引擎中没有了“母版页”,取而代之的是叫做“布局”的页面(_Layout.cshtml)放在了共享视图文件夹中。在这个页面中,会看到标签里有这样一条语句:

@RenderBody()

其实它的作用和母版页中的服务器控件类似,当创建基于此布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过布局页面的@RenderBody()方法呈现在标签之间。

这个方法不需要参数,而且只能出现一次。

@RenderPage

从名称可以猜出来这个方法是要呈现一个页面。比如网页中固定的头部可以单独放在一个共享的视图文件中,然后在布局页面中通过这个方法调用,用法如下:

@RenderPage("~/Views/Shared/_Header.cshtml")

带参数:

@RenderPage("~/Views/Shared/_Header.cshtml", new { parm = "my", parm2 = "you" })

被@RenderPage的页面获取传递过来的参数:

@PageData["param"]

@RenderSection

布局页面还有节(Section)的概念,也就是说,如果某个视图模板中定义了一个节,那么可以把它单独呈现出来,用法如下:

@RenderSection("Header")

当然还要在视图中定义节,否则会出现异常:

@section head{
     //do
}

为了防止因缺少节而出现异常,可以给RenderSection()提供第2个参数:

@RenderSection("SubMenu", false)

或:

@if (IsSectionDefined("SubMenu"))
    {
        @RenderSection("SubMenu", false)
    }
    else
    {
        <p>SubMenu Section is not defined!</p>
    }

@Html.Partial

Partial 每次都会创建自己的 TextWriter 实例并且把内容缓存在内存中. 最后把所有 Writer 输出的内容发送到一个 MvcString 对象中,更多时候我们会使用:

@{
        Html.RenderPartial("Details");
    }

而不是:

@Html.Partial("Details")

@RenderPage()和@RenderPartial()的区别

@RenderPage()调用的页面只能使用其传递过去的数据。

@RenderPartial()是可以使用viewdata,model等数据的。

@Html.RenderPartial和@Html.RenderAction的区别

@Html.RenderPartial适合用在重覆使用的UserControl,并且只需要透过Model来呈现内容,或是对于广告的UserControl也适合使用。

@Html.RenderAction则会先去呼叫Controller的Action方法,如果此UserControl是需要透过资料库取得资料来呈现(透过Action来读取资料库),此时会比较适合使用此方式。

时间: 2024-08-08 02:02:37

ASP.NET MVC载入页面常用方法的相关文章

学习ASP.NET MVC(七)——我的第一个ASP.NET MVC 查询页面

在本篇文章中,我将添加一个新的查询页面(SearchIndex),可以按书籍的种类或名称来进行查询.这个新页面的网址是http://localhost:36878/Book/ SearchIndex.该页面中用一个下拉框来显示种类,用一文本框让用户输入书籍的名称.当用户在点击“查询”按钮之后,页面会被刷新,显示用户的查询结果.控制器会根据用户提交查询参数,由动作方法(Action Motehd)去解析用户提交的参数值,并使用这些值来查询数据库. 第一步,创建SearchIndex查询页面    

学习ASP.NET MVC(五)——我的第一个ASP.NET MVC CURD页面

在上一篇文章中我们已经创建了实体类,在这一篇文章中,我将创建一个新的控制器类——BookController,使用BookController对Books表中的数据进行CURD操作的方法,并使用视图模板在浏览器中显示所查询到的书籍数据信息. 一.添加控制器类 在Visual Studio 的“解决方案资源管理器”中右键单击Controllers文件夹,并创建一个新的BookController控制器类.如下图. Visual Studio 会弹出一个“添加控制器”对话框(如下图). 在对话框中填

[转] 利用 ResultFilter 实现 Asp.net Mvc 3 页面静态化

为了提高网站性能.和网站的负载能力,页面静态化是一种有效的方式,这里对于 asp.net mvc3 构架下的网站,提供一种个人认为比较好的静态话方式. 实现原理是通过 mvc 提供的过滤器扩展点实现页面内容的文本保存,直接上代码: 1 public class StaticFileWriteFilterAttribute : FilterAttribute, IResultFilter 2 { 3 public void OnResultExecuted(ResultExecutedContex

Asp.Net MVC Views页面不包含“GetEnumerator”的公共定义

“/”应用程序中的服务器错误. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS1579: “Web.Models.Book”不包含“GetEnumerator”的公共定义,因此 foreach 语句不能作用于“Web.Models.Book”类型的变量 源错误:   行 16: <td>操作</td> 行 17: </tr> 行 18: @foreach (var item in

学习ASP.NET MVC系列 - 还有比这更简炼的吗?把复杂的事情变简单了,贡献啊!

转自 学习ASP.NET MVC系列: 学习ASP.NET MVC(一)--我的第一个ASP.NET MVC应用程序 学习ASP.NET MVC(二)--我的第一个ASP.NET MVC 控制器 学习ASP.NET MVC(三)--我的第一个ASP.NET MVC 视图 学习ASP.NET MVC(四)--我的第一个ASP.NET MVC 实体对象 学习ASP.NET MVC(五)--我的第一个ASP.NET MVC CURD页面 学习ASP.NET MVC(六)--我的第一个ASP.NET M

ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL

ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL 引言--- 在现今搜索引擎制霸天下的时代,我们不得不做一些东西来讨好爬虫,进而提示网站的排名来博得一个看得过去的流量. URL重写与优化就是搜索引擎优化的手段之一. 假如某手机网站(基于ASP.NET MVC)分类页面URL是这样的, http://www.xxx.com/category/showcategory?categoryid=1000&view=list&orderby=price&p

ASP.NET没有魔法——ASP.NET MVC Razor与View渲染

对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的界面呈现工作是由浏览器完成的,Web应用的原理是通过Http协议从服务器上获取到对应的Html代码以及相关资源,使得浏览器能够完成正确的呈现工作. ASP.NET MVC作为一个Web应用构建框架View承担了UI显示的功能,在开发过程中View以Action的名称命名,当用户的请求被路由到某一Action方法时,ASP.NET MVC将会根据Action的名称来获取到对应的V

在ASP.NET MVC中使用jQuery的Load方法加载静态页面的一个注意点

使用使用jQuery的Load方法可以加载静态页面,本篇就在ASP.NET MVC下实现. Model先行: public class Article { public int Id { get; set; } public string Url { get; set; } } 在HomeController中的Index方法,向视图传递一个Article强类型. public class HomeController : Controller { public ActionResult Ind

ASP.NET MVC 页面调整并传递参数

转自:http://blog.csdn.net/zhensoft163/article/details/7174661 使用过ASP.NET MVC的人都知道在MVC中页面后台中常用的页面跳转方法有几种,如:return View().return RedirectToAction() 一般情况下我们返回的都是本页面,所以使用return View()就可以解决问题了,但是很多时候我们也会遇到返回的页面不是本页面的,那么就会用到后面两种,但是如果我们在页面返回的时候也要返回操作的结果的时候,我们