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

使用ViewModel时View中遍历CustomerVlan的foreach循环报错求助

解决foreach遍历CustomerVlan集合的类型不匹配错误

问题现象

在使用ConnVlanDron ViewModel的View页面中,尝试通过foreach循环遍历CustomerVlan集合时,先后触发两个错误:

  • 初始报错CS0230:需要类型和标识符
  • 添加var后报错CS1579:无法对Customervlan类型的变量执行foreach语句,因为该类型没有GetEnumerator的公共实例或扩展定义

错误根源

ViewModel中CustomerVlan被定义为单个Customervlan对象,但Controller却将List<Customervlan>集合赋值给该属性,类型不匹配导致无法执行遍历操作。

修复步骤

1. 修改ViewModel定义

将CustomerVlan属性的类型改为集合类型(如List<Customervlan>):

using AirportSit.Models;

namespace AirportSit.ViewModels
{
    public class ConnVlanDron
    {
        public Connection Connection { get; set; }
        // 改为集合类型,匹配Controller中的赋值类型
        public List<Customervlan> CustomerVlan { get; set; }
    }
}

2. 调整Controller赋值逻辑

Controller中cvlans已经是List<Customervlan>类型,修改ViewModel后可直接正常赋值:

public List<Customervlan> cvlans = new List<Customervlan>();
public List<Connection> conn = new List<Connection>();

public IActionResult Create()
{
    var VLANDDisnull = from myobject in _db.CustomerVlans
                      where myobject.DisconnectionDate == null
                      select myobject;

    ViewData["Customercode"] = new SelectList(_db.Customers, "Id", "CompanyName");
    ViewData["Customervlancode"] = new SelectList(VLANDDisnull.ToArray(), "Id", "CompanyName");
    ViewData["Switchcode"] = new SelectList(_db.Switchzs, "Id", "SwitchName");

    ConnVlanDron CV = new ConnVlanDron();
    // 类型匹配,可正常赋值集合
    CV.CustomerVlan = cvlans;
    CV.Connection = conn;

    return View(CV);
}

3. 确认View中的遍历代码

View中的foreach语句无需额外修改,可正常遍历集合:

@using AirportSit.ViewModels
@model ConnVlanDron

@foreach(var Azure in Model.CustomerVlan)
{
    // 在此添加遍历后的业务逻辑
}

<form method="post">
    <div class="border p-3 mt-4">
        <div class="row pb-2">
            <h2 class="text-primary">Create Connection</h2>
            <hr />
        </div>
        <div class="mb-3">
            <label asp-for="Connection.SwitchPortNumber"></label>
            <input asp-for="Connection.SwitchPortNumber" class="form-control" />
            <span asp-validation-for="Connection.SwitchPortNumber" class="text-danger"></span>
        </div>
        <!-- 其他表单内容 -->
</form>

内容的提问来源于stack exchange,提问作者Null Zero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:35:00