gpt4 book ai didi

c# - MVC 传递列表以查看问题

转载 作者:行者123 更新时间:2023-11-30 19:19:47 24 4
gpt4 key购买 nike

我在 Controller 中有一个列表如下:

    public class TruckData
{
public string Truck{ get; set; }
}


var truckdat = (from p in KowaDataContext.tblTrucks
orderby p.Truck
select new TruckData {Truck= p.Truck});


var trucklist = truckdat.ToList();

ViewBag.TrckList= trucklist;

View 如下所示:

    @foreach (Data.Rep.Controllers.TruckController.TruvckData item in ViewBag.TrckList)         
{
<tr>

<td>
@item.Truck
</td>
</tr>

}

我的问题是,如何在不使用类的情况下将列表传递给 View :

     public class TruckData
{
public string Truck{ get; set; }
}

因此我的列表如下所示:注意下面对 TruckData 的引用是如何消失的:

    var truckdat = (from p in KowaDataContext.tblTrucks
orderby p.Truck
select new {Truck= p.Truck});

var trucklist = truckdat.ToList();

ViewBag.TrckList= trucklist;

我不确定 View 中的 foreach 会是什么样子。我尝试了下面显示的内容,但给了我一个问题。

  @foreach (var item in ViewBag.TrucksSelectList) 

最佳答案

不,这是不可能的。您不能将匿名对象传递给 View 。这样做的原因是匿名对象被编译器作为 internal 发出。由于 ASP.NET 将 View 动态编译到单独的程序集中,因此它们无权访问此模型。

My question is, how can I pass the list to the view without using the class:

这将违背所有良好实践 => 您需要使用 View 模型:

var truckdat = 
from p in KowaDataContext.tblTrucks
orderby p.Truck
select new TruckData { Truck = p.Truck };

ViewBag.TrckList = truckdat.ToList();

然后在 View 中:

@foreach (var item in (IEnumerable<TruckData>)ViewBag.TrckList) 
{
<div>@item.Truck</div>
}

并且由于您有一个字符串列表,您可以将其用作模型:

var truckdat = 
from p in KowaDataContext.tblTrucks
orderby p.Truck
select p.Truck;

ViewBag.TrckList = truckdat.ToList();

然后在 View 中:

@foreach (var item in (IEnumerable<string>)ViewBag.TrckList) 
{
<div>@item</div>
}

我也强烈建议您摆脱 ViewBag 并使用强类型 View 模型:

public ActionResult Foo()
{
IEnumerable<TruckData> model =
from p in KowaDataContext.tblTrucks
orderby p.Truck
select new TruckData { Truck = p.Truck };

return View(model);
}

然后:

@model IEnumerable<TruckData>
@foreach (var item in Model)
{
<div>@item.Truck</div>
}

并为 TruckData 类型引入一个显示模板 (~/Views/Shared/DisplayTemplates/TruckData.cshtml):

@model TruckData
<div>@Model</div>

您甚至可以摆脱主视图中丑陋且无用的 foreach 循环:

@model IEnumerable<TruckData>
@Html.DisplayForModel()

关于c# - MVC 传递列表以查看问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8154237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com