【问题标题】:WebGrid grid.Columns Format ErrorWebGrid grid.Columns 格式错误
【发布时间】:2012-01-25 10:12:57
【问题描述】:
@{
    var grid = new WebGrid(Model.Auctions, rowsPerPage: Model.PagingInfo.ItemsPerPage, defaultSort: "AddedDate");
}

@grid.GetHtml(
        columns: grid.Columns(
                **grid.Column(columnName: "", header: "Type", format: (auction) => AuctionListViewModel.GetAuctionType(auction)),**
                grid.Column(columnName: "OwnerReference", header: "Owner reference")
            )
        );

public class AuctionListViewModel
    {
        public IEnumerable<Auction> Auctions { get; set; }
        public IEnumerable<Item> Items { get; set; }
        public PagingInfo PagingInfo { get; set; }
        public string Title { get; set; }
        public string Action { get; set; }

        public static string GetAuctionType(Auction auction)
        {
            var type = string.Empty;
            if (auction is LubAuction)
            {
                type = "Lowest unique wins";
            }
            else if (auction is EsfAuction)
            {
                type = "Highest wins";
            }

            return type;
        }
    }

通过上面的查看代码和模型,在加粗的那一行得到如下错误,这是为什么?

“UI.Models.AuctionListViewModel.GetAuctionType(UI.AuctionService.Auction)”的最佳重载方法匹配有一些无效参数

【问题讨论】:

    标签: asp.net-mvc-3 razor webgrid


    【解决方案1】:

    grid.Column 方法的format 参数的参数(在您的情况下为auction)中,您将获得实际项目(Auction),但它被包装到名为WebGridRow 的动态包装器中。

    您可以在此包装器上使用您的属性并将其委托给实际项目,例如:auction.Title 将起作用,但如果您想获取整个项目(Auction),您需要使用WebGridRow.

    format: auction => 
          uctionListViewModel.GetAuctionType(((WebGridRow)auction).Value)
    

    【讨论】:

      【解决方案2】:

      由于 WebGrid 助手的动态(弱)类型,您需要一个演员:

      grid.Column(
          columnName: "", 
          header: "Type", 
          format: (auction) => AuctionListViewModel.GetAuctionType((Auction)auction.Value)
      )
      

      我建议您使用更好的网格助手,例如 MvcContrib GridTelerik Grid,这将为您提供强大的输入和编译时安全性。

      【讨论】:

        猜你喜欢
        • 2012-10-24
        • 2012-12-01
        • 2011-07-21
        • 1970-01-01
        • 2011-07-04
        • 2016-06-06
        • 1970-01-01
        • 2016-07-20
        • 2011-07-20
        相关资源
        最近更新 更多