我正在编写一个MVC 5
互联网应用程序,我希望在view
中使用DisplayFor
方法时显示div
的Id
。
这是我的一些代码:
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"和没有扩展方法"DisplayFor"接受第一个 可以找到类型为"System.Web.Mvc.HtmlHelper"的参数 (是否缺少 using 指令或程序集引用?
不确定我是否已将DisplayWithIdFor
方法放在正确的位置。我希望在名为AssetController
的controller
的Edit
view
中使用DisplayWithIdFor
方法,并将DisplayWithIdFor
方法放在AssetController
中。
我可以对此代码提供一些帮助吗?
提前谢谢。
你的方法应该是这样的
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());
}
}
}