Почему я не могу присвоить значение объявленной директиве @model напрямую без использования хелперов, вот так
@model site.Models.PageNews
Controllers.NewsController dataControllerNews = new Controllers.NewsController();
Model.MenuNews = dataControllerNews.OneUpdateMenuNews(new Models.MenuPanelNews());
выдает ошибку
System.Web.Mvc.WebViewPage.Model.get returned null.
Или как то все таки можно.
Вы пытаетесь присвоить значение свойству объекта модели, который ещё не инициализирован. Естественно получаете исключение.
По хорошему, значение для Model должно присваиваться в контроллере на сервере. После чего страница рендерится и отправляется в браузер.
То, что делаете Вы (создание контроллера и получение модели в представлении), как минимум нарушает принцип MVC. Каждый компонент этого паттерна должен заниматься своим делом.
А зачем вам проводить все эти операции прямо в модели?
Решение 1: Заполнить это свойство прямо в контроллере на этапе формирования модели.
Решение 2: Передавать объект в ViewBag или ViewData. И использовать его на странице
var menuNews = ViewBag.MenuNews as MenuPanelNews;
var menuNews = ViewData["MenuNews"] as MenuPanelNews;
Решение 3: Напишите метод, но не в контроллере, а в пространстве Helpers, учитесь разделять логику.
@model site.Models.PageNews
@{
var menuNews = site.Helpers.Class1.OneUpdateMenuNews(new Models.MenuPanelNews());
}
Где Class1
namespace site.Helpers
{
public static class Class1
{
public static MenuNews OneUpdateMenuNews(MenuPanelNews menuPanelNews)
{
//TODO
}
}
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники