Пытаясь использовать 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)
Но я получаю ошибку на обоих
Во-первых:
"The type or namespace name 'HtmlHelpers' could not be found (are you missing a using directive or an assembly reference?)"
Для второго:
"'System.Web.Mvc.HtmlHelper>' does not contain a definition for 'DisplayWithBreaksFor' and no extension method 'DisplayWithBreaksFor' accepting a first argument of type"
"'System.Web.Mvc.HtmlHelper>' could be found (are you missing a using directive or an assembly reference?)"
Вы использовали полный путь здесь @using HtmlHelpers
или только этот?
Вы должны использовать полное пространство имен:
@using YourProjectName.YourAssemblyName.FolderNameWhereYourClassLives;
Вы добавили неправильное пространство имен. Я думаю, что вы не должны помещать метод в контроллер. Просто создайте новый класс. Таким образом, вы можете лучше повторно использовать код. Вот образец. Вы можете обратиться. Надеюсь помочь, дружище :))
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)
@Conor8630: Отлично сыграно, дружище :))
HtmlHelpers
— это имя класса,@using
ожидает пространства имен. Кроме того, это имя конфликтует с именем из фреймворка.