asp.net mvc里的母版页和自定义控件

(1)母版页

在mvc 样例程序LogOn.cshtml 里没有看到<html></html>这样的标记,我猜他有类似于webform里母版页的东东,最后发现在Views目录下,有一个_ViewStart.cshtml 文件,有一句代码:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

  这段代码用来指定母版页的。

logOn.cshtml 的代码里没看到指定母版页的语句,那么它估计是调用了_ViewStart.cshtml,什么时候调用的,不清楚,大概asp.net mvc默认的吧。

而在_Layout.cshtml 里:

<div >
@RenderBody()
</div>

  @RenderBody 估计是显示LogOn.cshtml 等页面内容的吧。

(2) 用户控件

在_Layout.cshtml 里发现了这么一句:

@Html.Partial("_LogOnPartial")

Html.Patial 的含义: Renders the specified partial view as an HTML-encoded string.渲染部分视图,想来就是用户控件了。

还有另外一种写法:

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

看起来上面的简单好写,不过两者还是有区别滴。

Partial输出到临时变量StringWriter ;RenderPartial输出到HtmlHelper.ViewContext.Writer上(即直接输出到Response)。

_Layout.cshtml _LogOnPartial.cshtml 都放在Views/Shared 目录下,于是乎,我明白了,shared目录是干嘛的。

好,明白了,asp.net mvc 里母版页和用户控件怎么写,怎么调用啦。