Вопрос

Код ниже отлично работает с Engine ASPX View, я пытаюсь преобразовать его в Razor, как показано ниже. Проблема в первом столбце не отображается.

Я преобразую первый столбец в ссылку, используя метод действия. С Razor It (первый столбец) вообще не визуализируется на странице. Остальная часть сетки в порядке.

В чем может быть проблема?

@{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();}
Это было полезно?

Решение

Я отошел от использования сетки MVCContrib, так как она не имеет большого смысла в сетке, которая у нас есть.

В любом случае, проблема заключалась в том, что код в вопросе не возвращает HTML, но ставит код непосредственно в потоку ответа. И код для столбцов, отображаемых с использованием Razor, который помещал код в потоку всякий раз, когда называется. Таким образом, он в конечном итоге помещает столбцы в потоку до того, как сетка.

Это было разрешено, не использовав код бритвы в действии, вызванном Grid.

Другие советы

Хорошо, я получил это для меня со следующим

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

Из: MVCContrib Grid Custom Columns (Razor)

Я сделал это при переносе некоторых страниц .aspx в бритву.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top