我有一個Inventory類,其中不僅包含其自己的字段,還包含對其他類的幾個參考ID。在單個webgrid中呈現多個IEnumberables和單個值屬性
public class Inventory {
public int Id { get; set; }
public string RtNum { get; set; }
public string AcntNum { get; set; }
public string CardNum { get; set; }
public string Num { get; set; }
[Range(1,3)]
public int Type { get; set; }
public int CompanyId { get; set; }
public int BranchId { get; set; }
public int PersonId { get; set; } }
在我的操作中,我從其他類生成了幾個IEnumerable相關字段的列表。我也有幾個我想傳遞給視圖的非列表值。我知道如何創建一個ViewModel以將所有內容傳遞給webgrid,但無法遍歷列表。我也知道如何將索引自動映射到一個列表,請參見How to display row number in MVC WebGrid。 如何將兩者結合起來,以便您可以使用索引遍歷多個列表?
更新#1(詳細)
public class Company {
public int Id { get; set; }
public string Name { get; set; } }
public class Branch {
public int Id { get; set; }
public string Name { get; set; } }
public class Person {
public int Id { get; set; }
public string Name { get; set; } }
public class MyViewModel {
public int PageNumber { get; set; }
public int TotalRows { get; set; }
public int PageSize { get; set; }
public IEnumerable<Inventory> Inventories { get; set; }
public int Index { get; set; }
public IEnumerable<string> CmpNm { get; set; }
public IEnumerable<string> BrnNm { get; set; }
public IEnumerable<string> PrnNm { get; set; } }
控制器
public class InventoryController : Controller
{ // I have a paged gird who’s code is not relevant to this discussion but a pagenumber,
// pagesize and totalrows will be generated
private ProjectContext _db = new ProjectContext();
public ActionResult Index() {
IEnumerable<Inventory> inventories = _db.Inventories;
List<string> cmpNm = new List<string>; List<string> brnNm = new List<string>; List<string> prnNm = new List<string>;
foreach (var item in inventories) { string x1 = "";
Company cmps = _db. Company.SingleOrDefault(i => i.Id == item.CompanyId); if (cmps!= null)
{ x1 = cmps.Name; } cmpNm.Add(x1); x1 = "";
Branch brns = _db. Branch.SingleOrDefault(i => i.Id == item. Branch Id); if (brns!= null) { x1 = brns.Name; } brnNm.Add(x1); x1 = "";
Person pers = _db.Persons.SingleOrDefault(i => i.Id == item. PersonId);
if (pers!= null) { x1 = pers.Name; } prnNm.Add(x1);
// the MyViewModel now needs to populated with all its properties and generate an index
// something along the line of
new MyViewModel { PageNumber= pagenumber, PageSize= pagesize, TotalRows=Totalrows, Inventories = inventories; CmpNm=cmpNm, BrnNm=brnNm, PrnNm=prnNm}
視圖(如何創建索引的問題)
@model.Project.ViewModels.MyViewModel
@{ var grid = new WebGrid(Model.Inventories, Model.TotalRows, rowsPerPage: Model.PageSize); }
@grid.GetHtml(columns: grid.Columns(
Grid.Column(「PrnNm」, header: "Person", format: @Model.PrnNm.ElementAt(Index))
Grid.Column(「BrnNm」, header: "Branch", format: @Model.BrnNm.ElementAt(Index))
Grid.Column(「CmpNm」, header: "Company", format: @Model.CmpNm.ElementAt(Index))
grid.Column("RtNum", header: "Route"),
grid.Column("AcntNum", header: "Account"),
grid.Column("CardNum", header: "Card")
… ) )
什麼網應看起來不言而喻。
我不明白你的問題。請顯示您的視圖模型以及填充它的控制器操作。您在這裏展示的是您的域模型,它對WebGrid非常不感興趣,因爲您將視圖模型傳遞給視圖。還提供了一個例子,你如何看待這個表。 –
謝謝,請參閱我更新的問題。 – Joe
@DarinDimitrov你可以看看,你還需要什麼嗎?謝謝 – Joe