You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在视图方法签名中为变量赋值?附控制器及仓储方法代码

解决控制器与仓储方法的参数匹配问题

看起来你这里有几个小问题导致int id无法正确传递并匹配到仓储方法的逻辑,我帮你一步步修复:

1. 先修正仓储方法的逻辑错误

你当前的GetPodcastById方法里有两个明显问题:

  • 方法参数是int Id,但内部用了未定义的变量podId,这是笔误
  • 用int类型的Id去匹配字符串类型的NameRoute,类型不匹配(除非NameRoute是数字格式的字符串)

情况一:通过实体的int Id属性查找

如果你的PodcastShow有对应的int Id属性,直接用Id匹配更合理,修改仓储方法:

public PodcastShow GetPodcastById(int id) 
{
    // 用LINQ替代foreach,代码更简洁高效
    return podcasts.FirstOrDefault(show => show.Id == id);
}

情况二:通过数字格式的NameRoute查找

如果业务逻辑确实需要用传入的int id匹配NameRoute(比如NameRoute是"123"这类数字字符串),需要先把int转成字符串:

public PodcastShow GetPodcastById(int id) 
{
    string podId = id.ToString();
    return podcasts.FirstOrDefault(show => show.NameRoute == podId);
}

2. 修正控制器的方法调用

你的控制器里调用的是_Repository.GetById(id),但仓储方法的实际名称是GetPodcastById,所以要修正方法名:

public ViewResult Show(int id) 
{ 
    ShowViewModel showView = new ShowViewModel(); 
    // 修正方法名,匹配仓储的实际方法
    showView.Show = _Repository.GetPodcastById(id); 
    ViewBag.title = showView.Show?.collectionName; // 建议加空值判断,避免空引用异常
    return View(showView); 
}

额外提示

建议给showView.Show加个空值判断(比如用?.操作符),防止当找不到对应数据时出现空引用异常。

内容的提问来源于stack exchange,提问作者Marcus Reighter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:44:56