我有一个在静态类中定义的自定义帮助器方法,如下所示:
namespace MyProject.Helpers
{
public static class MyHelpers
{
public static MvcHtmlString TestData(this HtmlHelper helper, Guid controlId)
{
return MvcHtmlString.Create(string.Format("<div>Test Data: {0}</div>", controlId.ToString()));
}
}
}
我想在另一个被定义为cshtml模板的帮助器中使用这个帮助器,如下所示:
@using System.Web.Mvc
@using MyProject.Helpers
@helper PanelHelper(ADOR.CMSWeb.Data.CMSControl control)
{
<div>
@Html.TestData(Guid.NewGuid())
</div>
}
这不起作用。我无法从cshtml帮助程序中访问Html帮助程序。我尝试过使用System.Web.Mvc.HtmlHelper,但我的扩展方法不在该类上。
有谁知道如何从cshtml Helper中访问静态助手来完成我想要做的事情?看起来应该很容易。
感谢。
答案 0 :(得分:1)
由于这个原因和其他原因,我个人不是@helper
的粉丝。将助手更改为部分视图可以解决问题。
另一种解决方案是将HtmlHelper
作为另一个参数添加到PanelHelper
。
或者您可以创建PanelHelper
扩展方法并使用TagBuilder创建您的Html。
(我强烈建议您使用TagBuilder
代替string.Format
来创建Html。它可以更严格的格式创建html,并且unit-tested my Microsoft)