我想根据参数收到的TopUserCount值加载部分视图。我有不同的PartialView可满足此要求。但似乎View Component只加载Default.cshtml
类似的东西:
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
}
答案 0 :(得分:0)
您的if
声明似乎很时髦;我建议使用这样的case
语句:
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;
}
}
答案 1 :(得分:0)
将部分视图放在右侧文件夹结构中非常重要。 在这种情况下,在'Views \ ControllerName \ Components \ ViewComponentName'
下答案 2 :(得分:0)
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 if else if;或者您应该使用case语句,这里不会有太大变化,但是您的文件结构必须看起来像
查看/共享/组件/ {组件名称} /Default.cshtml 查看/ {ControllerName} /组件/ {组件名称} /Default.cshtml