2011-01-20 76 views
1

下面的代码与aspx视图引擎很好地工作,我试图将它转换为剃须刀如下。问题是第一列不显示。MVCContrib Grid Razor问题,Column.Action不渲染

我使用操作方法将第一列转换为链接。随着剃刀它(第一列)没有得到渲染页面。其余的网格很好。

可能是什么问题?

@{Html.Grid(Model.Orders).Attributes(style => "width: 100%;").Columns(
column => { 
    column.For(x => x.OrderNumber).Action(p => { 
     @:<td> 
     Html.ActionLink(
      p.OrderNumber.ToString(), 
      "orderdetail", 
      "OrderUpdate", 
      new { id = p.OrderNumber, backUrl = Url.Action("OrderHistory", new { controller = "DataController", id = ViewData["id"] }) }, 
      new { }); 
     @:</td> 
    }).HeaderAttributes(style => "text-align:left"); 

    column.For(x => x.OrderTimeV2).HeaderAttributes(style => "text-align:left"); 

    column.For(x => x.Status).HeaderAttributes(style => "text-align:left"); 

    column.For(x => x.Type).HeaderAttributes(style => "text-align:left"); 
}).RowStart((p, row) => { }).Render();} 
+0

您是否找到解决方案? – Daveo 2011-03-05 04:28:42

回答

1

我已经离开使用mvccontrib网格,因为它在我们的网格中没有多大意义。

无论如何问题是问题中的代码不会返回html,而是直接将代码放入响应流中。并且使用剃刀渲染列的代码,每次调用时都会将代码放入流中。所以它最终会在呈现网格之前将列放入流中。

这是通过不使用网格调用的剃须刀代码解决的。

0

好吧,我得到它的工作对我来说有以下

@Html.Grid(Model.Result).Columns(column => { 
    column.For(u => u.Name).Named("Name"); 
    column.For(u => u.Code).Named("Code"); 
    column.For(u => Html.ActionLink("Edit", "Edit", new { id = u.Id })).Named("Edit"); 
0

你可以做一个自定义列中得到你想要的东西:

@Html.Grid(Model).Columns(column => { 
    column.Custom(
    @<div> 
     <em>Hello there</em> 
     <strong>@item.Name</strong> 
    </div> 
    ).Named("Custom Column"); 
}) 

来源:MvcContrib Grid Custom Columns (Razor)

我这样做将一些.aspx页面移植到Razor时。