0

我正在编写一个MVC 5互联网应用程序,我希望在使用 a 中的方法时显示 aId的.divDisplayForview

这是我拥有的一些代码:

public static MvcHtmlString DisplayWithIdFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, string wrapperTag = "div")
{
    var id = helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(ExpressionHelper.GetExpressionText(expression));
    return MvcHtmlString.Create(string.Format("<{0} id=\"{1}\">{2}</{0}>", wrapperTag, id, helper.DisplayFor(expression)));
}

这是我得到的错误:

“System.Web.Mvc.HtmlHelper”不包含“DisplayFor”的定义,并且找不到接受“System.Web.Mvc.HtmlHelper”类型的第一个参数的扩展方法“DisplayFor”(您是否缺少 using 指令还是汇编参考?)

我不确定我是否将DisplayWithIdFor方法放置在正确的位置。我希望在被调用的中使用该DisplayWithIdFor方法,并将该方法放在.Edit viewcontrollerAssetControllerDisplayWithIdForAssetController

我可以对这段代码有一些帮助吗?

提前致谢。

4

1 回答 1

0

你的方法应该是这样的

using System;
using System.Linq.Expressions;
using System.Web.Mvc;
using System.Web.Mvc.Html;

namespace YourAssembly.Html
{
  public static class DisplayHelper
  {
    public static MvcHtmlString DisplayWithIdFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, string wrapperTag = "div")
    {
      var id = helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(ExpressionHelper.GetExpressionText(expression));
      MvcHtmlString text = DisplayExtensions.DisplayFor(helper, expression);
      Tagbuilder html = new TagBuilder(wrapperTag);
      html.MergeAttribute("id", id);
      html.InnerText = text;
      return MvcHtmlString.Create(html.ToString());
    }
  }
}
于 2014-11-17T08:54:05.263 回答