ASP.NET MVC 2 预览版 2 - 扩展 LabelExtensions.LabelFor

发布于 2024-08-10 06:28:31 字数 875 浏览 10 评论 0原文

我想知道是否有人尝试在 MVC2 中为 LabelExtensions.LabelFor HtmlHelper 编写扩展助手?这对我很有用,因为我的应用程序要求我始终将标签包装在 中。带有类属性的标签。我认为我可以编写一些扩展方法,而不是在视图中重复该代码:

public static MvcHtmlString RenderLabelFor<TModel, TValue> (
    this HtmlHelper html,
    Expression<Func<TModel, TValue>> value,
    object htmlAttributes
) where TModel : class
{
    TagBuilder builder = new TagBuilder("td");
    builder.MergeAttributes(new RouteValueDictionary(attributes)); // to convert an object into an IDictionary
    builder.InnerHtml = LabelExtensions.LabelFor(html, value).ToString();
    return MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal));
}

但是我在 LabelFor 行上收到错误:

方法 'System.Web.Mvc.Html.LabelExtensions.LabelFor(System.Web) 的类型参数.Mvc.HtmlHelper, System.Linq.Expressions.Expression>)' 无法从用法中推断出来。尝试显式指定类型参数。

有人能给我一根骨头吗?

I'm wondering if anyone has attempted to write an extension helper to the LabelExtensions.LabelFor HtmlHelper in MVC2? This would be useful for me in that my app requires that I always wrap labels in a <td> tag with a class attribute. Rather than have that code repeated in the View I thought I could write a little extension method:

public static MvcHtmlString RenderLabelFor<TModel, TValue> (
    this HtmlHelper html,
    Expression<Func<TModel, TValue>> value,
    object htmlAttributes
) where TModel : class
{
    TagBuilder builder = new TagBuilder("td");
    builder.MergeAttributes(new RouteValueDictionary(attributes)); // to convert an object into an IDictionary
    builder.InnerHtml = LabelExtensions.LabelFor(html, value).ToString();
    return MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal));
}

However I get the error on the LabelFor line:

The type arguments for method 'System.Web.Mvc.Html.LabelExtensions.LabelFor(System.Web.Mvc.HtmlHelper, System.Linq.Expressions.Expression>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

Can anyone throw me a bone on this one?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

稀香 2024-08-17 06:28:31

这可能为时已晚,无法为您提供帮助,但您需要在方法签名中使用 HtmlHelper 的通用版本,如下所示:

public static MvcHtmlString RenderLabelFor<TModel, TValue> (
    this HtmlHelper<TModel> html,
    Expression<Func<TModel, TValue>> value,
    object htmlAttributes
)
{
    ...
}

This may be too late to help you, but you need to use the generic version of HtmlHelper in your method signature, like so:

public static MvcHtmlString RenderLabelFor<TModel, TValue> (
    this HtmlHelper<TModel> html,
    Expression<Func<TModel, TValue>> value,
    object htmlAttributes
)
{
    ...
}
烦人精 2024-08-17 06:28:31

尝试

public static MvcHtmlString RenderLabelFor<TModel, TValue> ( HtmlHelper html, <Func<TModel, Value>> value, object htmlAttributes) where TModel : class

try

public static MvcHtmlString RenderLabelFor<TModel, TValue> ( HtmlHelper html, <Func<TModel, Value>> value, object htmlAttributes) where TModel : class
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文