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

Передача дополнительных данных в EditorTemplate

Допустим, у меня есть LineItem (из примера с чрезмерно используемой корзиной покупок), и я хочу отобразить его с помощью EditorTemplate.

Я совершенно нормально отображаю его с помощью @Html.EditorFor(m => m.LineItems) из родительского представления (частичного или иного), но что сбивает с толку, так это лучший подход для передачи некоторых дополнительных данных (скажем, SelectList, который имеет данные поступающие из базы данных) в шаблон.

Ясно, что я не должен загрязнять модель LineItem, добавляя эти посторонние элементы (которые, однако, необходимы с точки зрения представления).

Я пытаюсь увидеть, есть ли строго типизированный способ сделать это, прежде чем прибегать к трюкам ViewBag/ViewData.

Я попытался создать специальную модель представления «LineItem» для передачи данных, но она искажает имена, генерируемые MVC, и добавляет дополнительный слой в коллекцию (поскольку я передаю IEnumerable‹> модели представления в EditorFor( ) вызов вместо IEnumerable‹> фактического LineItem)

Кроме того, это неправильное использование EditorTemplate? Требует ли LineItem раскрывающийся список с параметрами, поступающими из таблицы базы данных, слишком много для EditorTemplate?

Пожалуйста, направьте меня к нирване MVC. Пока жду ответов, попробую другие идеи!

Чтобы уточнить: причина, по которой я рассматриваю возможность использования EditorTemplate, связана с автоматической обработкой коллекции, которую он мне предоставляет. В противном случае весь бизнес [id] становится слишком липким.


  • Разве вы не можете использовать для этого ChildAction? 12.08.2011
  • Вы решили эту проблему с тех пор? 17.08.2011
  • Дочернее действие — не лучший способ создания пользовательского интерфейса ввода. Я решил эту проблему, используя вариант метода Стивена Сандерсона (blog.stevensanderson.com) для отображения списка частичных просмотров. 13.09.2011

Ответы:


1

Недавно я столкнулся с той же проблемой и нашел это решение.

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

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

Пожалуйста, дайте мне знать, если это соответствует вашему сценарию или если вы найдете какое-либо другое решение.

12.08.2011
  • Хотя в итоге я реализовал его без EditorTemplates, это то, что я бы использовал с шаблонами Editor. 13.09.2011
  • Спасибо, связанная страница была полезна 29.01.2014
  • URL-адрес изменился... они, должно быть, сменили CMS: weblogs.asp.net/jongalloway// 18.12.2015
  • Новые материалы

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

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

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

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

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

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

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