C# 如何使用视图组件按其名称调用PartialView,而不是加载default.cshtml
我想根据参数接收的TopUserCount值加载部分视图。我有不同的PartialView可满足此要求。但视图组件似乎只加载Default.cshtml 大概是这样的:C# 如何使用视图组件按其名称调用PartialView,而不是加载default.cshtml,c#,asp.net-core,asp.net-core-viewcomponent,C#,Asp.net Core,Asp.net Core Viewcomponent,我想根据参数接收的TopUserCount值加载部分视图。我有不同的PartialView可满足此要求。但视图组件似乎只加载Default.cshtml 大概是这样的: public IViewComponentResult Invoke(int TopUserCount) { var items = GetUsers().OrderByDescending(u => u.Points).Take(TopUserCount); if(TopUserCount == 1) r
public IViewComponentResult Invoke(int TopUserCount)
{
var items = GetUsers().OrderByDescending(u => u.Points).Take(TopUserCount);
if(TopUserCount == 1) return View("customView1");
if (TopUserCount == 2) return View("customView2");
else
return View(items); //defaultView.cshtml
}
public IViewComponentResult Invoke(int TopUserCount)
{
var items = GetUsers().OrderByDescending(u => u.Points).Take(TopUserCount);
switch(TopUserCount)
{
case 1:
return View("customView1");
break;
case 2:
return View("customView2");
break;
default:
return View(items); //defaultView.cshtml
break;
}
}
你的
if
语句看起来很古怪;我建议使用如下的案例
语句:
public IViewComponentResult Invoke(int TopUserCount)
{
var items = GetUsers().OrderByDescending(u => u.Points).Take(TopUserCount);
if(TopUserCount == 1) return View("customView1");
if (TopUserCount == 2) return View("customView2");
else
return View(items); //defaultView.cshtml
}
public IViewComponentResult Invoke(int TopUserCount)
{
var items = GetUsers().OrderByDescending(u => u.Points).Take(TopUserCount);
switch(TopUserCount)
{
case 1:
return View("customView1");
break;
case 2:
return View("customView2");
break;
default:
return View(items); //defaultView.cshtml
break;
}
}
将局部视图放置在右侧文件夹结构处非常重要。 在本例中,在“视图\ControllerName\Components\ViewComponentName”下
public IViewComponentResult Invoke(int TopUserCount)
{
var items = GetUsers().OrderByDescending(u => u.Points).Take(TopUserCount);
if (TopUserCount == 1) return View("customView1", items);
else if (TopUserCount == 2) return View("customView2", items);
else return View("defaultView", items);
}
我把你的第二个if换成了else if;或者您应该使用case语句,在这里我不会做太多更改,但是您的文件结构必须看起来像
视图/Shared/Components/{ComponentName}/Default.cshtml
视图/{ControllerName}/Components/{ComponentName}/Default.cshtml