Nano Hash - криптовалюты, майнинг, программирование

Как передать список ViewModels в View?

Я новичок в C # и asp.net mvc, и я пытался найти ответ на свой вопрос здесь и на других форумах, но безуспешно. Однако, если этот вопрос был задан и на него был дан ответ раньше, прошу прощения, и не могли бы вы дать ссылку на этот пост.

Я пытаюсь создать древовидное представление, в котором я передаю список ViewModels моему View.

Я использую подход, ориентированный на код, и добавил миграцию между моей моделью и базой данных.

Моя проблема в том, как передать список объектов ViewModel в View? Я могу передать список объектов модели из контроллера, но как передать список объектов ViewModel? Это возможно?

Может быть, есть простое решение, которого я еще не нашел, и, возможно, я все делаю неправильно. В любом случае мне действительно нужна помощь.

public class MyClass
  {
        public int Id { get; set; }
        public int ParentId { get; set; }
        public string Name { get; set; }
  }


public class MyClassViewModel
  {
    public MyClass Parent { get; set; }
    public List<MyClass> Children
    {
        get { return GetChildren(); }
    }
    public List<MyClass> GetChildren()
    {
        var listOfChildren = new List<MyClass>().Where(c => c.ParentId == 
        Parent.Id).ToList();

        return listOfChildren;
    }
  }


public ActionResult CreateTree()
    {
        var viewModel = new MyClassViewModel();
 //This only returns one instance of an object, how to return a list?
        return View("CreateTree", viewModel); 
    }
05.04.2019

  • Я считаю, что вы пытаетесь получить доступ к viewModel. Дети, которые являются списком MyClass 05.04.2019
  • Проверьте это: c-sharpcorner.com/article / c-treeview-to-mvc-razor-view 05.04.2019
  • Это также несколько примеров для аналогичной проблемы: stackoverflow.com/questions/942489/ 05.04.2019
  • @NirmalSubedi. Мне нужно создать список объектов модели представления, каждый из которых содержит объект MyClass и его дочерние элементы (которые являются объектами MyClass). 05.04.2019
  • Спасибо за советы. Я уже изучал обе эти страницы раньше, но посмотрю еще раз, возможно, я что-то упустил ... 05.04.2019

Ответы:


1

Это очень просто, вы просто передаете в представление список своей модели представления:

[HttpGet()]
public IActionResult CreateTree()
{
    List<MyViewModel> viewModelList = MyViewModel.GetList();
    return View("CreateTree", viewModelList);
}

В представлении вы устанавливаете ожидаемый тип для модели с помощью директивы @model.

@model List<MyViewModel>
@{
    //stuff
}

Теперь вы можете просто просмотреть свой список моделей просмотра.

@foreach (MyViewModel item in Model)
{
     //stuff
}
05.04.2019
  • Спасибо за быстрый ответ, однако GetList() не является признанным методом ..? 05.04.2019
  • Это всего лишь пример метода, который возвращает List ‹MyViewModel›. 05.04.2019
  • Спасибо, недоразумение. 05.04.2019

  • 2

    Вы можете создать класс, содержащий список ваших ViewModels

    public class ModelWithListOfViewModels
    {
        public List<ViewModel> ViewModels { get; set; }
    }
    

    Добавьте свои ViewModels в список в контроллере

    public ModelWithListOfViewModels model { get; set; }
    
    [HttpGet()]
    public ActionResult FillList()
    {
        model = new ModelWithListOfViewModels();
        //Here you fill the list with the ViewModels you want to pass to the View
        model.ViewModels.Add(/** ViewModel here **/);
        return View("CreateTree", model);
    }
    

    Затем просто прокрутите список, чтобы получить вашу модель в представлении.

    @model ModelWithListOfViewModels
    
    @foreach (var vm in Model.ViewModels)
    {
         //use vm to get access to a ViewModel added in the list
    }
    
    05.04.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..