我正在对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
。
我可以帮助您使用此代码吗?
提前致谢。
答案 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());
}
}
}