尝试使用我在第一个答案中在此处找到的html帮助器:
在此处设置控制器部分:
public static class HtmlHelpers
{
public static MvcHtmlString DisplayWithBreaksFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
{
var metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
var model = html.Encode(metadata.Model).Replace("\r\n", "<br />\r\n");
if (String.IsNullOrEmpty(model))
return MvcHtmlString.Empty;
return MvcHtmlString.Create(model);
}
}
在视图中,我使用:
@using HtmlHelpers
和
@Html.DisplayWithBreaksFor(m => m.MultiLineField)
但是我都遇到了错误
第一个:
“找不到类型或名称空间名称'HtmlHelpers'(您是否缺少using指令或程序集引用?)”
第二次:
“'System.Web.Mvc.HtmlHelper>'不包含'DisplayWithBreaksFor'的定义,也没有扩展方法'DisplayWithBreaksFor'接受类型为”“的第一个参数。
“可以找到'System.Web.Mvc.HtmlHelper>(您是否缺少using指令或程序集引用?)”
答案 0 :(得分:1)
您添加了错误的名称空间。我认为您不应该将方法放在控制器中。只需创建一个新类。因此,您可以更好地重用代码。这是一个样本。你可以参考。希望对您有帮助,我的朋友:))
1)我创建了一个新类,其名称空间为MvcExam.UtilitiesClass
namespace MvcExam.UtilitiesClass
{
public static class HtmlHelpers
{
public static MvcHtmlString DisplayWithBreaksFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
{
var metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
var model = html.Encode(metadata.Model).Replace("\r\n", "<br />\r\n");
if (String.IsNullOrEmpty(model))
return MvcHtmlString.Empty;
return MvcHtmlString.Create(model);
}
}
}
2)在视图中
@using MvcExam.UtilitiesClass
@Html.DisplayWithBreaksFor(m => m.Name)
答案 1 :(得分:0)
您必须使用完整的名称空间:
@using YourProjectName.YourAssemblyName.FolderNameWhereYourClassLives;