• Как не получать один и тот же обьект два раза?

    @t0di
    Используйте конструкцию @{ }, а если нужно указать текст там, то используйте . И никто не запрещает объявлять переменные.
    @if (th.FMessage.Count > 0)
                {
                  var message = th.FMessage.OrderByDescending(m => m.ForumMessageId).FirstOrDefault();
                  @message.MessageDate
                    <text>От</text> @message.User.DisplayName
                }
    Ответ написан
    Комментировать
  • Как сохранить информации в Лист на ASP.NET MVC 4.0?

    Vadimyan
    @Vadimyan
    Программист C#
    Привет. Я согласен с @foxmuldercp - материалы полезные.
    static-поле в контроллере - худшее из возможных решений. Архитектура MVC предполагает наличие модели, которую вы игнорируете. Контроллер должен работать с неким репозиторием в части извлечение и сохранения данных. Приведу упрощенный пример
    public interface IUsersRepository
    {
        UserInfo SaveUserInfo(UserInfo user);
        IReadOnlyCollection<UserInfo> GetUsers();
    }


    В этом случае ваш контроллер может выглядеть следующим образом:
    (Это тестовый пример, на практике нужно использовать DI через IoC-контейнер для внедрения репозитория)
    public class HomeController : Controller
    {
        private readonly IUsersRepository _usersRepository;
        public HomeController()
        {
            _usersRepository = new UsersRepository();
        }
            
        public ActionResult Index()
        {
            var users = _usersRepository.GetUsers();
            return View(users);
        }
    
        public ActionResult Create()
        {
            return View();
        }
    
        [HttpPost]
        public ActionResult Create(UserInfo userInfo)
        {
            if (ModelState.IsValid)
            {
                _usersRepository.SaveUserInfo(userInfo);
                Users.Add(userInfo);
                return RedirectToAction("Index");
            }
            return View();
        }
    }


    При этом работа по сохранению пользователей переносится на реализацию интерфейса IUsersRepository. В зависимости от ваших потребностей, вы можете реализовать хранение коллекции пользователей в БД, в файле на диске, в оперативной памяти (для этого нужно либо сделать репозиторий синглтоном, либо заговнокодить статическую коллекцию в нём).
    Несколько замечаний напоследок:
    1. Репозитории обычно отвечают за работу с конкретным хранилищем данных на уровне сохрани/удали/извлеки, а места для бизнес-логики не остаётся. Поэтому звеньев может быть еще больше - есть сервис бизнес-логики для работы с пользователями, который через репозиторий извлекает данные, а после формирует модель для отдачи контроллеру. Таким образом из класса EF code first Person может формироваться модель UserInfo.
    2. Еще раз напомню про материалы @foxmuldercp , которые на начальных этапах изучения mvc могут быть очень полезны.
    Ответ написан
    Комментировать