首页 > 解决方案 > 使用视图模型获取 linq 值以正确显示在视图中的问题

问题描述

我正在尝试通过视图模型在视图中显示从 linq 查询中检索到的数据。我为 linq 查询设置了一个变量,然后在视图模型中的表实例中引用它。如果我放弃视图模型并在返回视图中返回变量,我会得到我想要的数据。当我尝试使用视图模型时,当我引用 linq 查询变量时,我被迫调用 ToString,而不是我想要的结果数据,我得到了这个 TRAIntranet2019.Models.TblShiftInfo,这是我正在查询的表。我正在为视图模型(使用视图模型时)或常规模型(仅使用 linq 变量时)更改视图顶部的模型引用。Shift target 是我正在处理的当前示例。

private TRAKERContext db = new TRAKERContext();

// GET: LandingPageVMs
public IActionResult Index()
{

    var shiftTarget = db.TblShiftInfo.FirstOrDefault();
    //var rvuvalue = db.Tradetail.FirstOrDefault().ToString();



    TblShiftByRadByDate tblShiftByRadByDate = new TblShiftByRadByDate()
    {
        //ShiftName = "Late Night Shift"
    };

    Tradetail tradetail = new Tradetail()
    {
        //Rvuvalue = (double)rvuvalue
        //SignLastName = rvuvalue.ToString()
    };

    TblShiftInfo tblShiftInfo = new TblShiftInfo()
    {
        //ShiftAvgTarget = Convert.ToDouble(shiftTarget),
        Shift_Name = shiftTarget.ToString()

    };

    RadidCrosswalk radidCrosswalk = new RadidCrosswalk()
    {
        RadFname = "Jimmie"
    };

    FacilityCrosswalk facilityCrosswalk = new FacilityCrosswalk()
    {
        FacilityName = "TRA"
    };

    LandingPageVM vm = new LandingPageVM()
    {
        TblShiftByRadByDate = tblShiftByRadByDate,
        Tradetail = tradetail,
        TblShiftInfo = tblShiftInfo,
        RadidCrosswalk = radidCrosswalk,
        FacilityCrosswalk = facilityCrosswalk

    };

    return View(vm);
}

预期输出 = “班次名称”

实际输出 = "TRAIntranet2019.Models.TblShiftInfo"

标签: c#linq.net-core

解决方案


我不明白这个问题,但试图弄清楚......

  • 使用视图模型:

控制器上的动作:

public IActionResult About()
        {
            TblShiftInfo tblShiftInfo = new TblShiftInfo()
            {
                Shift_Name = "Shift Name Example",
                ShiftAvgTarget = 12345
            };

            LandingPageVM vm = new LandingPageVM()
            {
                TblShiftInfo = tblShiftInfo,
            };

            return View(vm);
        }

风景:

@model MyWevApp2.Models.LandingPageVM

<h2>Data in ViewModel</h2>

<p>@Model.TblShiftInfo.Shift_Name</p>
<p>@Model.TblShiftInfo.ShiftAvgTarget</p>
  • 使用 ViewBag 或 ViewData。

如果您不想使用 ViewModel... 您可以使用 ViewBag 或 ViewData。例如:

控制器:

public IActionResult Contact()
{
    TblShiftInfo tblShiftInfo = new TblShiftInfo()
    {
        Shift_Name = "Shift Name Example",
        ShiftAvgTarget = 12345
    };

    ViewBag.TblShiftInfo = tblShiftInfo;

        return View();
    }

在视图中,您可以使用 ViewBag:

<p>@ViewBag.TblShiftInfo.Shift_Name</p>

希望能帮助到你!


推荐阅读