Razor MVCContrib网格剃须刀问题,列。操作不呈现

Razor MVCContrib网格剃须刀问题,列。操作不呈现,razor,mvccontrib,mvccontrib-grid,Razor,Mvccontrib,Mvccontrib Grid,下面的代码与aspx视图引擎配合使用效果很好,我正在尝试将其转换为razor,如下所示。问题是第一列没有显示 我使用action方法将第一列转换为link。使用razor,它(第一列)根本不会在页面中呈现。网格的其余部分很好 有什么问题吗 @{Html.Grid(Model.Orders).Attributes(style => "width: 100%;").Columns( column => { column.For(x => x.OrderNumber).Act

下面的代码与aspx视图引擎配合使用效果很好,我正在尝试将其转换为razor,如下所示。问题是第一列没有显示

我使用action方法将第一列转换为link。使用razor,它(第一列)根本不会在页面中呈现。网格的其余部分很好

有什么问题吗

@{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();}
@{Html.Grid(Model.Orders).Attributes(style=>“width:100%;”).Columns(
列=>{
column.For(x=>x.OrderNumber).Action(p=>{
@:
Html.ActionLink(
p、 OrderNumber.ToString(),
“订单详情”,
“订单更新”,
新建{id=p.OrderNumber,backUrl=Url.Action(“OrderHistory”,新建{controller=“DataController”,id=ViewData[“id”]}),
新{});
@:
}).HeaderAttributes(样式=>“文本对齐:左”);
column.For(x=>x.OrderTimeV2).HeaderAttributes(样式=>“文本对齐:左”);
column.For(x=>x.Status).headerAttribute(style=>“文本对齐:左”);
column.For(x=>x.Type).headerAttribute(style=>“文本对齐:左”);
}).RowStart((p,row)=>{}).Render();}

我不再使用mvccontrib网格,因为它在我们现有的网格中没有多大意义

无论如何,问题是问题中的代码不返回html,而是将代码直接放入响应流中。以及使用razor呈现的列的代码,只要调用razor,razor就会将其代码放入流中。所以,它最终会在网格渲染之前将列放入流中


通过在grid调用的操作中不使用razor代码解决了这个问题。

我已经不再使用mvccontrib grid,因为它在我们的grid中没有多大意义

无论如何,问题是问题中的代码不返回html,而是将代码直接放入响应流中。以及使用razor呈现的列的代码,只要调用razor,razor就会将其代码放入流中。所以,它最终会在网格渲染之前将列放入流中


通过在grid调用的操作中不使用razor代码,解决了这个问题。

好的,我用下面的代码实现了它

 @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");

好的,我用下面的方法让它为我工作

 @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");

您可以执行自定义列以获取所需内容:

@Html.Grid(Model).Columns(column => {
  column.Custom(
    @<div>
      <em>Hello there</em>
      <strong>@item.Name</strong>
    </div>
   ).Named("Custom Column");
})
@Html.Grid(Model).Columns(column=>{
列。自定义(
@
你好
@item.Name
)。命名为(“自定义列”);
})
发件人:


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

您可以通过自定义列获得所需内容:

@Html.Grid(Model).Columns(column => {
  column.Custom(
    @<div>
      <em>Hello there</em>
      <strong>@item.Name</strong>
    </div>
   ).Named("Custom Column");
})
@Html.Grid(Model).Columns(column=>{
列。自定义(
@
你好
@item.Name
)。命名为(“自定义列”);
})
发件人:


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

你找到解决方案了吗?嗨,Daveo,我刚刚回答了我自己的问题。你找到解决方案了吗?嗨,Daveo,我刚刚回答了我自己的问题