我正在使用 .NET Core MVC 开发应用程序。我有不同的数据集,这些数据集通过请求加载到控制器。例如,我有以下控制器方法:
适用于此参数的方法在 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
我应该如何解决这个问题?
答案 0 :(得分:0)
然后您需要在不同的页面中进行渲染。您不应该全部渲染。
例如: localhost / Election 将使用各自的js呈现Table.Html。您可以为特定端点返回特定的html。
然后,您将在控制器中拥有一个端点的HTML。
答案 1 :(得分:0)
好吧...首先,有几种不同的方法来处理您的问题,每种方法都会教给您关于框架的一些非常重要的知识。我将提到的前两个不建议,但您应该知道一般可以做什么,即使在这种特定方案中他们是...。从概念上讲(imo)不好
因此,首先:您可以向模型添加属性。说HasYear
...和HasCountry
。在您看来,执行switch
或if
并输出所需的脚本和/或html。
第二:您可以让每个Controller端点使用一个不同视图。因此,您可以return View()
return View('IndexWithElection
而不是最后and
的情况下返回View('IndexWithCountry')`
从概念上讲,这是处理此问题的实际正确方法:
您称为Index
的另外两个端点不是Index
端点。一个是Year
,另一个是Country
。您可以使用[Route("{year}")]
和[Route("{year}/{location}")]
注释这些端点。因此,现在您有了三种不同的控制器操作,分别具有显式路由和显式View cshtmls。
祝你好运!