【问题标题】:How to use a custom column in a Mvccontrib Grid Model?如何在 Mvccontrib 网格模型中使用自定义列?
【发布时间】:2011-06-17 20:56:33
【问题描述】:

我正在使用这样的 ASP.NET MVC 3 Mvccontrib 网格:

@Html.Grid(Model).Columns(column =>
{
  column.For(x => x.UserId).Named("ID");
  column.For(x => x.Name);
  column.Custom(@<div><img src='@item.ImageUrl' alt="@item.Name"/><a href="@item.Link">@item.Name</a></div>).Named("Name");
  column.For(x => x.Score).Named("Score");
})

但现在我需要将其移动到自定义网格模型中:

@Html.MvcContrib().Grid(Model).WithModel(new MyGridModel()).Sort(ViewData["sort"] as GridSortOptions).Attributes(id => "grid", style => "width: 100%;")

对应的网格模型:

public class MyGridModel : GridModel<MyModel>
{
  public MyGridModel()
  {
    Column.For(x => x.UserId);
    Column.For(x => x.Name);
    Column.For(x => x.ImageUrl);
    RenderUsing(new HtmlTableGridRenderer<MyModel>());
  }
}

但是如何在网格模型中创建自定义列?
Column.Custom(???);

【问题讨论】:

    标签: asp.net-mvc-3 mvccontrib-grid


    【解决方案1】:

    试试这样:

    public class MyGridModel : GridModel<MyModel>
    {
        public MyGridModel()
        {
            Column.For(x => x.UserId);
            Column.For(x => x.Name);
            Column.Custom(MyImage);
            Column.For(x => x.Score);
            RenderUsing(new HtmlTableGridRenderer<MyModel>());
        }
    
        private static IHtmlString MyImage(MyModel model)
        {
            var div = new TagBuilder("div");
            var img = new TagBuilder("img");
            var a = new TagBuilder("a");
            img.Attributes["src"] = model.ImageUrl;
            img.Attributes["alt"] = model.Name;
            a.Attributes["href"] = model.Link;
            a.SetInnerText(model.Name);
    
            div.InnerHtml = string.Format(
                "{0}{1}",
                img.ToString(TagRenderMode.SelfClosing),
                a.ToString()
            );
    
            return MvcHtmlString.Create(div.ToString());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多