asp.net MVC4 HtmlHelper扩展和渲染功能

时间:2014-09-23 13:00:12

标签: c# asp.net-mvc-4 razor

使用这个stackoverflow线程,我为我的HtmlHelper

创建了一个扩展

How can I create a Html Helper like Html.BeginForm

我现在的问题是,我创建了一个带有.cshtml功能的自定义Accordion文件。没什么特别的,只是一个自定义功能,所以我可以渲染东西。

@helper Accordion(string text, HtmlHelper html)
{
   <div class="accordion">
       <div><h4>Das ist der Header</h4></div>
       <div>
           <p>Das ist der Content</p>
           <p>@text</p>
           @using(){

           }

       </div>
   </div>
}

在这个额外的文件中,您可以使用System HtmlHelper(通过Html),以及从参数html获得的助手。

现在当我尝试使用我的自定义扩展时,即在索引视图中我可以调用

@using(Html.RoleContainer()){}

但是在这个额外的渲染文件中,我无法打电话或看到Html.RoleContainerhtml.RoleContainer

如何在额外档案中提供RoleContainer,以便我可以在Accordion功能中使用它?

1 个答案:

答案 0 :(得分:0)

在研究Intellisense之后,我意识到Object中的Index.cshtmlHtmlHelper<dynamic>类型。

我所做的是将代码更改为

@helper Accordion(string text, System.Web.Mvc.HtmlHelper<dynamic> html)
{
   <div class="accordion">
       <div><h4>Das ist der Header</h4></div>
       <div>
           <p>Das ist der Content</p>
           <p>@text</p>
           @using(html.RoleContainer())
           {
               for(int i = 0; i < 4; i++){
                   <li>
                       @i: Test
                   </li>   
               }
           }

       </div>
   </div>
}

这样我可以使用扩展程序RoleContainer,如您在代码段中所示。

@ASP.cshtml.PostHelper.Accordion("Content 1", Html)