簡體   English   中英

將 Linq 查詢結果從 controller 傳遞到 View 並獲取錯誤(問題中的錯誤)

[英]Passing Linq query result to View from controller and Getting Error (error in the question)

獲取錯誤

傳遞到 ViewDataDictionary 的 model 項的類型為“Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable”1[CTA.Web.Areas.Nucleus.Models.UnitStatusUpdateDto]',但此 ViewDataDictionary 實例需要類型為“CTA”的 model 項。 Web.Areas.Nucleus.Models.UnitStatusUpdateDto'。

我應該得到一個結果,一個字符串說“新項目”。

我不知道為什么會拋出錯誤。 我明白了,它說我傳遞了兩種不同的類型,但它們似乎做的是一樣的。 這可能是非常簡單的事情,但我花了最后一個小時查看 SO 和谷歌,試圖找出我做錯了什么。 Controller

    [HttpGet]
    public IActionResult UpdateStatus(long auctionId)
    {
        var model = (from w in _db.WorkFlowStatusType
                    join u in _db.UnitStatusHistory on w.WorkFlowStatusTypeId equals u.CurrentStatus
                    where u.AuctionId == auctionId
                    select new UnitStatusUpdateDto
                    { 
                        CurrentStatusName = w.Name 
                    });
                  
        return View(model);
    }

Model

public class UnitStatusUpdateDto
{
    public string CurrentStatusName { get; set; }
}

看法

@model CTA.Web.Areas.Nucleus.Models.UnitStatusUpdateDto

<div class="col-8 bg-light ms-2">

<h3  class="text-primary my-3">Auction Info</h3>
<div class="row my-2">          
    <div class="row my-2">          
        <div class="col-6">Current Status</div>
        <div class="col-6 input-group-sm">
            @Model.CurrentStatusName
        </div>
    </div>
    <div class="col-6">New Status</div>
    <div class="col-6"style="padding-left: 0px;">
        
    </div>
</div>

目前您的model對象正在返回一個IQuerable ,要從您需要使用將填充它的方法的查詢轉換為 DTO 類。 這樣的事情是你只想要一個對象:

return View(model.First());

或者如果您可能有一個null結果:

return View(model.FirstOrDefault());
[HttpGet]
    public async Task<IActionResult> UpdateStatus(long auctionId)
    {
        var model = await (from w in _db.WorkFlowStatusType
                    join u in _db.UnitStatusHistory on w.WorkFlowStatusTypeId equals u.CurrentStatus
                    where u.AuctionId == auctionId
                    select new UnitStatusUpdateDto
                    { 
                        CurrentStatusName = w.Name 
                    }).FirstorDefaultAsync();
                  
        return View(model);
    }

考慮使用異步方法,以免阻塞 UI 線程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM