asp.net MVC4 HtmlHelper扩展和渲染函数

本文关键字:函数 扩展 net MVC4 HtmlHelper asp | 更新日期: 2023-09-27 18:24:14

使用这个stackoverflow线程,我为我的HtmlHelper 创建了一个扩展

如何创建类似Html.BeginForm 的Html帮助程序

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

@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获得的Helper。

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

@using(Html.RoleContainer()){}

但是在这个额外的渲染文件中,我既不能调用也不能看到Html.RoleContainerhtml.RoleContainer

如何使RoleContainer在额外的文件中可用,以便在Accordion函数中使用它?

asp.net MVC4 HtmlHelper扩展和渲染函数

在研究Intellisense之后,我意识到Index.cshtml中的Object是类型HtmlHelper<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)