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

如何将无关联单条数据的CompInfo表内容传递至ASP.NET Core视图?

解决ViewData传递CompInfo数据失败的问题

问题出在你查询Comp_Info的方式上:Where(m => m.Id == 1)返回的是IQueryable类型的查询表达式,并不是实际的实体对象,所以直接访问Comp_Info.street会取不到有效数据。你需要先执行查询,获取到具体的CompInfo实体,再通过ViewData传递。

修正步骤:

1. 执行CompInfo查询,获取实体对象

因为你的CompInfo表仅存一条数据,用FirstOrDefaultAsync()或SingleOrDefaultAsync()执行查询,拿到实际的实体对象:

var compInfo = await _context.CompInfo.FirstOrDefaultAsync(m => m.Id == 1);

2. 通过ViewData传递数据

你可以选择传递单个属性,或者直接传递整个实体(后者更灵活,视图中可直接访问所有属性):

  • 传递单个属性:
    if (compInfo != null)
    {
        ViewData["CompanyName"] = compInfo.Name;
        ViewData["Street"] = compInfo.Street;
        ViewData["Phone"] = compInfo.Phone;
        // 按需添加其他需要传递的属性
    }
    
  • 传递整个实体:
    ViewData["CompInfo"] = compInfo;
    

3. 修改后的完整控制器代码

public async Task<IActionResult> Offer(int qry_offer)
{
    ViewData["Message"] = "Offer";

    // 查询并获取CompInfo实体
    var compInfo = await _context.CompInfo.FirstOrDefaultAsync(m => m.Id == 1);
    if (compInfo != null)
    {
        // 方式1:传递单个属性(按需选择)
        ViewData["Street"] = compInfo.Street;
        ViewData["CompanyName"] = compInfo.Name;

        // 方式2:传递整个实体(二选一即可)
        // ViewData["CompInfo"] = compInfo;
    }

    // 原Offer查询逻辑保持不变
    var x412Context = _context.Offer
        .Where(m => m.Id == qry_offer)
        .Include(o => o.Kunde)
        .Include(o => o.Mandant)
        .Include(m => m.OfferPos)
            .ThenInclude(m => m.Ust);

    return View(await x412Context.ToListAsync());
}

视图中访问数据的方式

  • 如果传递的是单个属性:
    <p>公司地址:@ViewData["Street"]</p>
    <p>公司名称:@ViewData["CompanyName"]</p>
    
  • 如果传递的是整个实体:
    @{
        var compInfo = ViewData["CompInfo"] as YourNamespace.CompInfo;
    }
    @if (compInfo != null)
    {
        <p>公司名称:@compInfo.Name</p>
        <p>公司地址:@compInfo.Street</p>
        <p>联系电话:@compInfo.Phone</p>
    }
    

注意替换YourNamespace为你的CompInfo实体所在的命名空间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:25:44