使用这个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.RoleContainer
或html.RoleContainer
。
如何在额外档案中提供RoleContainer
,以便我可以在Accordion
功能中使用它?
答案 0 :(得分:0)
在研究Intellisense之后,我意识到Object
中的Index.cshtml
是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)