如何在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
相关产品推荐
相关产品推荐

