好的,我正在尝试对HtmlHelper实施Repeater扩展方法,如Phil Haack的博客http://haacked.com/archive/2008/05/03/code-based-repeater-for-asp.net-mvc.aspx中所述。 但是,当我尝试在我的View中使用它时,我得到一个编译错误'System.Web.Mvc.HtmlHelper'不包含'Repeater'的定义。
这是我的扩展类:
namespace MyAwesomeBlog.Helpers {
public static class HtmlHelpers {
public static void Repeater<T>(this HtmlHelper html
, IEnumerable<T> items
, Action<T> render
, Action<T> renderAlt) {
//实施无关紧要 }); }
public static void Repeater<T>(this HtmlHelper html
, Action<T> render
, Action<T> renderAlt) {
//实施无关紧要 }); }
public static void Repeater<T>(this HtmlHelper html
, string viewDataKey
, Action<T> render
, Action<T> renderAlt) {
//实施无关紧要 }); }
public static void Repeater<T>(this HtmlHelper html
, IEnumerable<T> items
, string className
, string classNameAlt
, Action<T, string> render) {
//实施无关紧要 });
}
}
}
我已将其包含在我的Web.Config中:
<add namespace="MyAwesomeBlog.Helpers"/>
这是我在视图中使用扩展方法:
<% HtmlHelper.Repeater<Post>(Model, "post", "post-alt", (post, cssClassName) => { %>
<div class="<%=cssClassName %>">
<h1><%= post.Title %></h1>
<p>
<%= post.Body %>
</p>
</div>
<% }); %>
仍然,编译器在“.Repeater”下给出了波浪线,说HtmlHelper没有这样的方法。
我错过了什么?
答案 0 :(得分:3)
您是将它添加到Views文件夹中的Web.Config还是根web.config? 它需要进入'Views / web.config'。
答案 1 :(得分:3)
关于我在其他答案中的评论,我刚刚检查过,我几乎可以肯定这是你的问题。您不能在静态类上使用扩展方法(或添加静态扩展方法),因此您需要一个HtmlHelper实例来调用Repeater。
答案 2 :(得分:1)
尝试将其更改为:
<% Html.Repeater<Post>(Model, "post", "post-alt", (post, cssClassName) => { %>
<div class="<%=cssClassName %>">
<h1><%= post.Title %></h1>
<p>
<%= post.Body %>
</p>
</div>
<% }); %>
View上的Html属性是HtmlHelper。
答案 3 :(得分:0)
我今天遇到了这个问题,在我的情况下关闭并重新打开页面上的html似乎就是诀窍(显然是编译项目)。
答案 4 :(得分:0)
扩展IHtmlHelper
接口而不是HtmlHelper
类。
public static void Repeater<T>(this IHtmlHelper html
, IEnumerable<T> items
, string className
, string classNameAlt
, Action<T, string> render) {