Можно ли пакетно генерировать представления в веб-приложении ASP.NET MVC C#?

По сути, у меня есть веб-приложение C # MVC с контроллерами, которые содержат такие методы:

public ActionResult A (filters)

public ActionResult B (filters)

public ActionResult C (filters)

Каждый из них принимает фильтры, заполняет список в модели с использованием данных (SQL из хранимой процедуры) и генерирует представление (с использованием таблиц данных). Насколько видит пользователь, он нажимает кнопку (A, B, C и т. д.), выбирает нужные фильтры, нажимает «ввод», и этот процесс запускается, создавая представление (которое в основном представляет собой отчет). Пользователь может многократно проходить этот процесс, и каждое из этих представлений/отчетов создается выше других на странице (они могут прокручиваться вверх и вниз). Что я хочу сделать, так это иметь другую кнопку -> страницу фильтра, где они выбирают только «партию» этих отчетов, которые они хотят создать. Таким образом, если пользователь выбирает вариант «Пакет 1», он генерирует отчет A (с заданными фильтрами), затем генерирует отчет B (предопределенные фильтры), затем генерирует отчет C (предварительно определенные фильтры), в идеале без каких-либо дополнительных входных данных из нужный пользователь.

Первоначально я надеялся получить какой-то «суперконтроллер», который вызывал бы ActionResult A, который запускал бы свой процесс и генерировал представление. Затем, вместо завершения, он вернется обратно к этому «суперконтроллеру», где он затем вызовет ActionResult B и запустит процесс, создав представление и т. д. Однако теперь мне интересно, возможно ли это вообще в MVC. Я действительно чувствую что-то в этом духе, если это самое «логичное» решение, но не похоже, что Controller позволит вам реализовать что-то подобное (по крайней мере, так, как я пробовал). Я также пытался внедрить Tasks, но единственное, что я смог с этим сделать, это создать 1 огромное представление/отчет, который не будет работать для того, что мне нужно (то есть для создания множества отдельных представлений, каждое из которых содержит возможность экспорта в PDF и т.д. через DataTables). Если бы кто-нибудь мог указать мне на какое-то решение/идеи для этого, я был бы очень признателен. Пожалуйста, дайте мне знать, если потребуется дополнительная информация.


person Random    schedule 04.02.2020    source источник
comment
Я не совсем уверен, что вы спрашиваете, но ответ либо stackoverflow.com/questions/10915485/ или частичное представление (stackoverflow.com/questions/4210138/view-vs-partialview)   -  person Alexei Levenkov    schedule 04.02.2020
comment
Здравствуйте и добро пожаловать в Stack Overflow. В дополнение к вариантам, предложенным @AlexeiLevenkov, вероятно, полезно рассматривать это как два отдельных вопроса: 1) как собрать модель представления в контроллере, который разделяет логику для сборки отчетов, и 2) В представлении, как вы создаете элементы, которые используют презентацию для отображения отчетов. Это, вероятно, приведет к более чистой и простой реализации, чем попытка агрегировать ActionResults (что, я считаю, возможно, но будет намного сложнее).   -  person Jeremy Caney    schedule 04.02.2020


Ответы (1)


Вы должны видеть действия от контроллеров как точки входа для ваших HTTP-запросов. Таким образом, каждый запрос сопоставляется с одним действием, так что это невозможно, и вы не должны думать об этом таким образом.

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

person Bogdan Nedelcu    schedule 04.02.2020