.NET Core MVC - разные контроллеры, разные HTML на одной странице, разные скрипты - PullRequest
0 голосов
/ 25 марта 2019

Я занимаюсь разработкой приложения с использованием .NET Core MVC . У меня есть разные наборы данных, которые загружаются через запрос к контроллерам. Например, у меня есть следующие методы контроллера:

  • локальный / Выборы
  • локальный / Выборы / 2008
  • локальный / Выборы / 2008 / Соединенные_Штаты_Америки

И методы, которые работают для этих параметров, находятся в ElectionController как:

public async Task<IActionResults> Index(){ 

   // Return a list of data
}


public async Task<IActionResults> Index(string year){ 

   // Return a list of data
}


public async Task<IActionResults> Index(string year, string location){ 

   // Return a list of data
}

Что происходит, эти методы возвращают некоторые данные на одной странице представления / Выборы / Индекс .

Но я хочу использовать разные коды JavaScript и разные html для представления этих наборов данных на странице просмотра / Election / Index. Давайте рассмотрим сценарий :

  • Если пользователь вводит: localhost / Election Тогда приложение выполняет рендеринг некоторой таблицы и использует / script / jsCode1.js

  • Когда пользователь вводит: localhost / Election / 2008 Затем приложение рендерит некоторые карты и использует / script / jsCode2.js

  • Когда пользователь входит в: localhost / Election / 2008 / United_States Затем приложение рендерит некоторые диаграммы и использует / script / jsCode3.js

Как мне подойти к решению этой проблемы?

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Хорошо, так ... во-первых, есть несколько разных способов решения вашей проблемы, и каждый научит вас чему-то очень важному в этой среде. Первые два, о которых я упомяну, не предложено , но вы должны знать, что вообще можно сделать, даже если в этом конкретном сценарии они есть. ... плохо, концептуально (ИМО)

Итак, прежде всего: Вы можете добавить свойство в Модель. Скажем, HasYear ... и HasCountry. И, по вашему мнению, выполните switch или if и выведите необходимые сценарии и / или html.

Второе: каждая конечная точка контроллера может использовать другое представление . Таким образом, вместо return View() в конце вы return View('IndexWithElection) and возвращаете View ('IndexWithCountry') `

И вот действительно правильный способ решения этой проблемы, концептуально:

Другие две конечные точки, которые вы назвали Index , не являются Index конечными точками . Один - Year, а другой - Country. Вы можете пометить эти конечные точки, скажем, [Route("{year}")] и [Route("{year}/{location}")]. Итак, теперь у вас есть три различных действия контроллера с явными маршрутами и явным представлением cshtmls.

Удачи!

0 голосов
/ 25 марта 2019

Вы должны сделать то же самое на разных страницах. Вам не нужно делать все на одной странице.

Пример: localhost / Election будет отображать Table.Html с соответствующими js.Вы можете вернуть определенный HTML для конкретной конечной точки.

Тогда у вас будет uno html для одной из ваших конечных точек в контроллере.

...