Проблема очень простая. Создал вспомогательный метод в отдельном классе. Код ниже.
namespace Lesson5_AddTask.Infostructure
{
public static class HelperMethods
{
public static MvcHtmlString Plus(this HtmlHelper helper, int a, int b)
{
TagBuilder tag = new TagBuilder("Label");
int c = a + b;
tag.SetInnerText((Convert.ToString(c)));
return new MvcHtmlString(tag.ToString());
}
}
}
Далее студия уже автоматом регит его в web.config
<add namespace="Lesson5_AddTask.Infostructure" />
Но он все равно не доступен во вьвере в @Html.
Работает только если вручную прописать вверху на вьюхе. Рабочий код ниже.
@using Lesson5_AddTask.Infostructure;
@{
Layout = null;
ViewBag.Title = "Index";
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@Html.Plus(16, 25);
</div>
</body>
</html>
Но всех этих костылей не хочется и хочу понять почему через веб.конфиг не работает???
Не воспроизводится, хотя сделал всё в точности по описываемым вами действиям.
Мне вот что не нравится. Как-то вы вскользь описываете web.config.
Я не помню, чтобы в классическом asp.net mvc неймспейс грузился автоматом, вроде как я его руками всегда прописывал.
Во-вторых, прописывается он в который файл web.config - который глобальный или который в папке views лежит? Правильно - который во views лежит.
А то может вы вообще ненароком правите файл в одном каталоге, а смотрите в другом? (Да-да, иногда такое случается дебажить несколько часов, а потом всплывает какая-то "мелочь")
Ради интереса создал пустой asp.net проект в 2017 студии, попробовал поправить дефолтный конфиг в папке views - всё прекрасно работает:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="WebApplication8" />
<add namespace="WebApplication8.Extensions" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
<system.web>
<compilation>
<assemblies>
<add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
</system.web>
</configuration>
(Добавил руками только одну строчку - с WebApplication8.Extensions
, я в папку Extensions обычно складываю методы расширения)
И могу ещё костыль предложить, не знаю вряд ли вам понравится, раз вы разобраться хотите: замените неймспейс на System.Web.Mvc
;)
Проблема решилась тем что просто нужно перезагрузить студию. Вот такой бок! Но всем все равно спасибо:)
Всем приветЧто быстрее и оптимальнее? Один большой List<T> (элементов так на 5000) или несколько List<T>'ов поменьше (на 500,1000 элементов и т