在MVC 5中使用HtmlHelper

时间:2014-11-17 07:09:37

标签: asp.net-mvc-5 html-helper asp.net-mvc-views displayfor

我正在对MVC 5互联网应用进行编码,并希望在Id中使用div方法时显示DisplayFor的{​​{1}}。

以下是我的一些代码:

view

这是我得到的错误:

  

' System.Web.Mvc.HtmlHelper'不包含的定义   ' DisplayFor'没有扩展方法' DisplayFor'接受第一个   类型' System.Web.Mvc.HtmlHelper'的参数可以找到   (您是否缺少using指令或程序集引用?)

我不确定我是否已将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))); } 方法放在正确的位置。我希望在名为DisplayWithIdFor的{​​{1}}的{​​{1}} DisplayWithIdFor中使用Edit方法,并将view方法放入controller

我可以帮助您使用此代码吗?

提前致谢。

1 个答案:

答案 0 :(得分: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());
    }
  }
}