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.RoleContainer
或html.RoleContainer
。
如何使RoleContainer
在额外的文件中可用,以便在Accordion
函数中使用它?
在研究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)