gpt4 book ai didi

asp.net-mvc-3 - MVC3 Web Grid 在列列表的开头添加操作链接

转载 作者:行者123 更新时间:2023-12-04 18:16:05 26 4
gpt4 key购买 nike

我正在使用 MVC3 WebGrid 控件来呈现实体列表。假设我有一个类似索引的页面,它呈现用户列表、项目、订单等。所有这些实体都有一个名为 ID 的列。

WebGrid 看起来不错,我唯一想要的是,一旦呈现列表,我想在所有其他列之前添加 3 个操作链接 Edit、Delete、Detail。

添加以下代码有效,但我不想在所有页面中重复此代码:

@grid.GetHtml(columns: grid.Columns(
grid.Column(header: "",
style: "text-align-center",
format: (item) => new
HtmlString(Html.ActionLink("Edit", "Edit", new { ID = item.ID }).ToString() + " | " +
Html.ActionLink("Details", "Details", new { ID = item.ID }).ToString() + " | " +
Html.ActionLink("Delete", "Delete", new { ID = item.ID }).ToString()
)
),
grid.Column("FirstName"),
grid.Column("LastName"),
grid.Column("EmailAddress")
)

基本上我想说的是@Grid.Render(Model) ...它应该创建前3个 Action 链接,它们会渲染模型的所有列。

我知道有 JQuery 网格和 MVCContrib 等,但请不要选择它们。

任何意见和提示将不胜感激。

最佳答案

您可以为网格编写自定义扩展方法:

using System.Linq;
using System.Web;
using System.Web.Helpers;
using System.Web.Mvc;
using System.Web.Mvc.Html;

public static class WebGridExtensions
{
public static IHtmlString MyGetHtml(this WebGrid grid, HtmlHelper html)
{
var columns =
(from n in grid.ColumnNames
select new WebGridColumn { ColumnName = n, CanSort = true }
).ToList<WebGridColumn>();
columns.Insert(0, grid.Links(html));
return grid.GetHtml(columns: columns, exclusions: new[] { "ID" });
}

public static WebGridColumn Links(this WebGrid grid, HtmlHelper html)
{
return grid.Column(
header: "",
style: "text-align-center",
format: item => new HtmlString(
html.ActionLink("Edit", "Edit", new { ID = item.ID }).ToString() + " | " +
html.ActionLink("Details", "Details", new { ID = item.ID }).ToString() + " | " +
html.ActionLink("Delete", "Delete", new { ID = item.ID }).ToString()
)
);
}
}

然后使用它:
@model IEnumerable<MyViewModel>
@{
var grid = new WebGrid(Model);
}
@grid.MyGetHtml(Html)

或者,如果您想控制其他列的构建:
@grid.GetHtml(
columns: grid.Columns(
grid.Links(Html),
grid.Column("FirstName"),
grid.Column("LastName"),
grid.Column("EmailAddress")
)
)

关于asp.net-mvc-3 - MVC3 Web Grid 在列列表的开头添加操作链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11698665/

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