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

ASP.NET MVC中如何用ViewModel展示两个无关联模型的数据

用ViewModel在ASP.NET MVC视图中展示两个无关联模型的数据

1. 创建ViewModel类

ViewModel的作用是将多个无关联的模型包装在一起,作为视图的统一数据载体。根据你的两个模型,定义如下ViewModel:

// 包装两个模型的ViewModel
public class ResumeViewModel
{
    public Experience Experience { get; set; }
    public Education Education { get; set; }
}

// 你的原始Experience模型
public class Experience
{
    public int ExperienceId { get; set; }
    public string ExperienceTitle { get; set; }
    public string ExperienceText { get; set; }
}

// 你的原始Education模型(注意字段EdicationText可能是拼写错误,建议修正为EducationText)
public class Education
{
    public int EducationId { get; set; }
    public string EducationTitle { get; set; }
    public string EdicationText { get; set; }
}

2. 在控制器中填充ViewModel并传递给视图

在控制器的Action方法中,分别从数据库获取两个模型的数据,填充到ViewModel后传给视图:

public class HomeController : Controller
{
    // 假设你使用Entity Framework或其他数据访问方式
    private readonly YourDbContext db = new YourDbContext();

    public ActionResult Index()
    {
        // 获取单条工作经历数据(根据业务需求调整,比如获取全部则用ToList())
        var experience = db.Experiences.FirstOrDefault();
        // 获取单条教育经历数据
        var education = db.Educations.FirstOrDefault();

        // 实例化并填充ViewModel
        var viewModel = new ResumeViewModel
        {
            Experience = experience,
            Education = education
        };

        return View(viewModel);
    }
}

3. 创建强类型视图展示数据

创建对应Action的视图,并指定ViewModel为强类型,通过Model访问两个模型的字段:

@model ResumeViewModel

<div class="experience-section">
    <h3>工作经历</h3>
    @if (Model.Experience != null)
    {
        <p>ID: @Model.Experience.ExperienceId</p>
        <h4>@Model.Experience.ExperienceTitle</h4>
        <p>@Model.Experience.ExperienceText</p>
    }
    else
    {
        <p>暂无工作经历数据</p>
    }
</div>

<div class="education-section">
    <h3>教育经历</h3>
    @if (Model.Education != null)
    {
        <p>ID: @Model.Education.EducationId</p>
        <h4>@Model.Education.EducationTitle</h4>
        <p>@Model.Education.EdicationText</p>
    }
    else
    {
        <p>暂无教育经历数据</p>
    }
</div>

扩展:展示多条数据

如果需要展示多条工作或教育经历,只需将ViewModel中的属性改为集合类型:

public class ResumeViewModel
{
    public List<Experience> Experiences { get; set; }
    public List<Education> Educations { get; set; }
}

控制器中获取集合数据:

var experiences = db.Experiences.ToList();
var educations = db.Educations.ToList();

var viewModel = new ResumeViewModel
{
    Experiences = experiences,
    Educations = educations
};

视图中用foreach遍历展示:

@foreach (var exp in Model.Experiences)
{
    <div>
        <h4>@exp.ExperienceTitle</h4>
        <p>@exp.ExperienceText</p>
    </div>
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:20:43