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

如何在ASP.NET MVC视图中添加多个模型(C# VS2022)

解决ASP.NET MVC中多模型数据传递到视图的问题

第一步:修正BothModels的属性访问修饰符

你定义的BothModels类中属性默认是私有访问权限,控制器无法直接赋值,需要改为公共(public):

public class BothModels
{
    public List<LoginModel>? LoginList { get; set; }
    public List<CategoriesModel>? CategoriesList { get; set; }
}

第二步:控制器中为BothModels赋值

直接将获取到的两个列表赋值给对应属性即可,注意返回时要传递给View方法:

List<LoginModel> loginDtl = getLogin();
List<CategoriesModel> ctgDtl = geCategory(); // 注意此处方法名可能是笔误,建议修正为getCategory()
BothModels bothModels = new BothModels();

// 为组合模型的属性赋值
bothModels.LoginList = loginDtl;
bothModels.CategoriesList = ctgDtl;

return View(bothModels);

第三步:视图中渲染两个列表数据

首先指定视图绑定的模型类型(替换为你的实际命名空间),然后分别遍历两个列表,同时要做非空判断避免空引用异常:

@model YourProjectNamespace.BothModels

<!-- 渲染LoginList数据 -->
<h3>登录信息列表</h3>
@if (Model.LoginList != null && Model.LoginList.Any())
{
    <table border="1">
        <thead>
            <tr>
                <th>用户名</th>
                <!-- 根据你的LoginModel添加其他字段表头 -->
            </tr>
        </thead>
        <tbody>
            @foreach (var loginItem in Model.LoginList)
            {
                <tr>
                    <td>@loginItem.User</td>
                    <!-- 渲染LoginModel的其他属性 -->
                </tr>
            }
        </tbody>
    </table>
}
else
{
    <p>暂无登录信息数据</p>
}

<!-- 渲染CategoriesList数据 -->
<h3>分类列表</h3>
@if (Model.CategoriesList != null && Model.CategoriesList.Any())
{
    <ul>
        @foreach (var categoryItem in Model.CategoriesList)
        {
            <li>@categoryItem.CategoryName</li> <!-- 替换为你的CategoriesModel实际属性名 -->
        }
    </ul>
}
else
{
    <p>暂无分类数据</p>
}

关键注意事项

  • 必须保证组合模型的属性是公共权限,否则控制器无法访问赋值
  • 视图中遍历前先判断列表是否为null且有数据,避免空引用报错
  • 控制器返回的是View(bothModels),而非直接返回模型对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:39:59