1
<%{
     WebGrid studentGrid = new WebGrid(rowsPerPage: StudentController.PageSize);
     studentGrid.Bind(Model.Students, autoSortAndPage: false, rowCount: Model.RowCount);
     studentGrid.PageIndex = Model.CurrentPage;
}%>

<%=studentGrid.GetHtml(columns: new WebGridColumn[]{
    studentGrid.Column("StudentId", "Id"),
    studentGrid.Column("Name", "Name"),
 })%>

不幸的是,我被迫在我的 MVC3 项目中使用 aspx 视图。

我希望有一列根据绑定到网格的列表项的某些条件显示文本“选择”或“删除”。

语法是如何做到这一点的

我必须像渲染 html

<span class="1" id=item.id>Select<span>

显示的 html 将只是Select

4

1 回答 1

2

你绝对可以做到,format你只需要在 C# 中手工制作 HTML:

<%

    var list = new[]
                    {
                        new { StudentId = 1, Name = "Name1", Cond = true },
                        new { StudentId = 2, Name = "Name3", Cond = false },
                        new { StudentId = 2, Name = "Name3", Cond = true },
                    };
    WebGrid studentGrid = new WebGrid();
    studentGrid.Bind(list, autoSortAndPage: false, rowCount: 3); 

%>
<%= studentGrid.GetHtml(columns: 
    new WebGridColumn[]
        {
            studentGrid.Column("StudentId", "Id"),
            studentGrid.Column("Name", "Name"),
            studentGrid.Column(header: "Action",  
                format: item =>
                {
                    string span = "<span class=\"1\" id=\"{0}\">{1}<span>";
                    string action = item.Cond ? "Select" : "Remove";
                    return Html.Raw(string.Format(span, item.StudentId, action));
                })
        })
%>

<% %>一般支持在 lambda 中使用 aspx 模板系统税(例如)(请参阅此Telerik 演示),但由于其WebGrid工作方式比 Telrik 不同,因此无法正常工作。

似乎WebGrid构建的方式只支持参数内的剃刀模板format......

于 2012-05-29T16:43:59.577 回答