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 id="main"> @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 里母版页和用户控件怎么写,怎么调用啦。