gpt4 book ai didi

html - 在一个页面中无冗余地添加具有样式的多个 WebGrid

转载 作者:搜寻专家 更新时间:2023-10-31 08:41:08 25 4
gpt4 key购买 nike

基本上,这是我在 View 中的代码,我不想重复 WebGrid 实例。

我的模型

public class UsersWithDetailsModels
{
public IEnumerable<ApplicationUser> ApplicationUsers { get; set; }
public IEnumerable<PersonalInfo> PersonalInfos { get; set; }
public IEnumerable<CreditHistory> CreditHistories { get; set; }
public IEnumerable<Transaction> Transactions { get; set; }
}

我的 Controller

[AllowAnonymous]
public ActionResult Index(UsersWithDetailsModels model)
{
return View(model); // HERE: I can't get any data from database
}

Index.cshtml

@model IEnumerable<Lml.Models.UsersWithDetailsModels>

@{
ViewBag.Title = "Home";
Layout = null;

// TABLE 1 with pager
var pg = new WebGrid(Model, defaultSort: "Id", canPage: true, ajaxUpdateContainerId: "borrowersAppliedTable");
pg.Pager(WebGridPagerModes.All);

// TABLE 2 with pager
var hg = new WebGrid(Model, defaultSort: "Id", canPage: true, ajaxUpdateContainerId: "borrowersAppliedAddressTable");
hg.Pager(WebGridPagerModes.All);

// TABLE 3 with pager
var hg = new WebGrid(Model, defaultSort: "Id", canPage: true, ajaxUpdateContainerId: "borrowersAppliedMailingTable");
hg.Pager(WebGridPagerModes.All);
}

你可以明显地看到它是多么的多余。

此外,我这里有列样式

<!-- TABLE 1 -->
<div class="col-lg-6">
<h2>Borrowers Applied</h2>
<div class="table-responsive">
@pg.GetHtml(
htmlAttributes: new { id = "borrowersAppliedTable" },
tableStyle: "table table-bordered table-hover table-striped",
footerStyle: "table-footer text-center",
columns:
pg.Columns(
pg.Column(columnName: "Id", header: "Entry ID", format: (item) => item.GetSelectLink(item.Id.ToString())),
pg.Column(columnName: "DateApplied", header: "Entry Date"),
pg.Column(columnName: "FullName", header: "Full Name"),
pg.Column(columnName: "Email", header: "Email address")
)
)
</div>
</div>

<!-- TABLE 2 -->
<div class="col-lg-6">
<h2>Home Addresses</h2>
<div class="table-responsive">
@hg.GetHtml(
htmlAttributes: new { id = "borrowersAppliedAddressTable" },
tableStyle: "table table-bordered table-hover table-striped",
footerStyle: "table-footer text-center",
columns:
hg.Columns(
hg.Column(columnName: "Id", header: "Entry ID", format: (item) => item.GetSelectLink(item.Id.ToString())),
hg.Column(columnName: "Street", header: "Street Address"),
hg.Column(columnName: "City", header: "City/Municipality"),
hg.Column(columnName: "Zip", header: "ZIP Code"),
hg.Column(columnName: "State", header: "Province/State"),
hg.Column(columnName: "Country")
))
</div>
</div>

<!-- TABLE 3 -->
<div class="col-lg-6">
<h2>Mailing Addresses</h2>
<div class="table-responsive">
@hg.GetHtml(
htmlAttributes: new { id = "borrowersAppliedMailingTable" },
tableStyle: "table table-bordered table-hover table-striped",
footerStyle: "table-footer text-center",
columns:
hg.Columns(
hg.Column(columnName: "Id", header: "Entry ID", format: (item) => item.GetSelectLink(item.Id.ToString())),
hg.Column(columnName: "MailStreet", header: "Street Address"),
hg.Column(columnName: "MailCity", header: "City/Municipality"),
hg.Column(columnName: "MailZip", header: "ZIP Code"),
hg.Column(columnName: "MailState", header: "Province/State"),
hg.Column(columnName: "MailCountry", header: "Country")
)
)
</div>
</div>

正如您所看到的这些行,我想将其应用于每个表。

tableStyle: "table table-bordered table-hover table-striped",
footerStyle: "table-footer text-center",

我不想再重复一遍。

谁能帮我知道在一个页面中显示多个 WebGrid 的快捷方式或有什么简洁的方法吗?

最佳答案

一种选择是为网格创建配置对象并循环遍历它们以生成实际的 html:

@model Lml.Models.UsersWithDetailsModels

@{
ViewBag.Title = "Home";
Layout = null;

var configs = new[]
{
new
{
Model = (IEnumerable<object>)Model.ApplicationUsers,
Id = "borrowersAppliedTable",
Header = "Borrowers Applied",
Columns = new[]
{
new {Name = "UserId", Header = "Entry ID"},
new {Name = "DateApplied", Header = "Entry Date"},
new {Name = "FullName", Header = "Full Name"},
new {Name = "Email", Header = "Email address"}
}
},
new
{
Model = (IEnumerable<object>)Model.PersonalInfos,
Id = "borrowersAppliedAddressTable",
Header = "Home Addresses",
Columns = new[]
{
new {Name = "Id", Header = "Entry ID"},
new {Name = "Street", Header = "Street Address"},
new {Name = "City", Header = "City/Municipality"},
new {Name = "Zip", Header = "ZIP Code"},
new {Name = "State", Header = "Province/State"},
new {Name = "Country", Header = "Country"}
}
},
new
{
Model = (IEnumerable<object>)Model.CreditHistories,
Id = "borrowersAppliedMailingTable",
Header = "Mailing Addresses",
Columns = new[]
{
new {Name = "Id", Header = "Entry ID"},
new {Name = "MailStreet", Header = "Street Address"},
new {Name = "MailCity", Header = "City/Municipality"},
new {Name = "MailZip", Header = "ZIP Code"},
new {Name = "MailState", Header = "Province/State"},
new {Name = "MailCountry", Header = "Country"}
}
},
...
};
var tables = configs.Select(config =>
{
var grid = new WebGrid(config.Model, defaultSort: config.Columns[0].Name, canPage: true, ajaxUpdateContainerId: config.Id);
grid.Pager(WebGridPagerModes.All);

return new { Id = config.Id, Grid = grid, Header = config.Header, Columns = config.Columns};
});
}

@{
foreach (var table in tables)
{
<div class="col-lg-6">
<h2>@table.Header</h2>
<div class="table-responsive">
@table.Grid.GetHtml(
htmlAttributes: new {id = table.Id },
tableStyle: "table table-bordered table-hover table-striped",
footerStyle: "table-footer text-center",
columns:
table.Grid.Columns(
table.Columns.Select((column, i) =>
{
return i == 0
? table.Grid.Column(columnName: column.Name, header: column.Header, format: (item) => item.GetSelectLink(item.Id.ToString()))
: table.Grid.Column(columnName: column.Name, header: column.Header);
}).ToArray())
)
</div>
</div>
}
}

关于html - 在一个页面中无冗余地添加具有样式的多个 WebGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43703981/

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