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

MVC视图模型问题:无法访问控制器传递给视图的对象/变量

问题:ViewModel传递到视图后无法访问变量

我尝试把ViewModel里的变量从控制器传到视图,但视图一直访问不到这些变量,相关代码和报错信息如下:

ViewModel代码

public class AuctionViewModels {
    public List<Auction> AllAuction { get; set; }
    public List<Auction> PromotedAuction { get; set; }
}

控制器Action方法

public ActionResult Index() {
    AuctionViewModels vmodel = new AuctionViewModels();
    vmodel.AllAuction = service.GetAllAuction(); //如需向视图传递多个模型
    vmodel.PromotedAuction = service.GetPromotedAuction();
    return View(vmodel);
}

视图代码

@model List<DealDouble.Web.ViewModels.AuctionViewModels>
@foreach (var auction in Model.AllAuction ) {
    <a href="#"><img class="card-img-top" src="http://placehold.it/700x400" alt=""></a>
}

报错信息

CS1061: 'List' 不包含 'AllAuction' 的定义,也找不到接受第一个参数为 'List' 类型的扩展方法 'AllAuction'(是否缺少 using 指令或程序集引用?)


问题分析 & 解决方案

这问题其实很直白——你在控制器里传给视图的是单个AuctionViewModels对象,但视图里却错误地把模型声明成了List<AuctionViewModels>(也就是这个类型的集合)。集合本身根本没有AllAuction这个属性,只有单个的AuctionViewModels实例才拥有这个属性,所以编译器自然就报错了。

只需要修改视图里的@model声明,去掉List<>,改成单个对象的类型就行:

@model DealDouble.Web.ViewModels.AuctionViewModels
@foreach (var auction in Model.AllAuction ) {
    <a href="#"><img class="card-img-top" src="http://placehold.it/700x400" alt=""></a>
}

这样视图就能正确识别模型类型,访问到AllAuction属性了。

内容的提问来源于stack exchange,提问作者Zubair Farooq

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:28:49