Jac*_*ack 11 inheritance razor asp.net-mvc-3
我想创建一个抽象基本视图(包含许多带有cshtml的虚拟方法),然后创建一个派生视图,可以选择覆盖这些方法来自定义视图:
例如:
override void Header(string title) {
<div class="massive">@title</div>
}
Run Code Online (Sandbox Code Playgroud)
如何用剃刀实现这一目标?
(不是每个人都想/需要这样做吗?)
虽然我确信通过一些努力可以让它发挥作用,但它并不像开箱即用那样.
相反,您可以使用已定义的部分创建布局,然后根据需要从添加新部分的布局中派生其他布局.然后,视图将声明它正在使用的布局
@{
Layout = "_Layout.cshtml" // app relative path to layout
}
Run Code Online (Sandbox Code Playgroud)
并且可以根据需要使用提供任何部分的标记
@section SectionName {
<p>I'm markup to go into a section in the layout this view is using</p>
}
Run Code Online (Sandbox Code Playgroud)
您可以通过ViewData和/或传递数据ViewBag,因此如果您想这样做,可以使用它们来传递代理.
或者,您可以决定向您的派生类型添加扩展方法HtmlHelper,UrlHelper甚至创建WebViewPage派生自System.Web.Mvc.WebViewPage和添加任何其他属性/方法,然后将其设置为视图使用的web.config pageBaseType中的属性/方法<system.web.webPages.razor>.
我相信使用Helper方法比在视图上尝试继承模型更好.使用Scott Gu的博客作介绍:
http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs
| 归档时间: |
|
| 查看次数: |
9733 次 |
| 最近记录: |