Question

code ci-dessous fonctionne très bien avec le moteur vue ASPX, je suis en train de le convertir en rasoir comme ci-dessous. Le problème est la première colonne ne se présentent pas.

I convertir la première colonne en lien avec la méthode d'action. Avec rasoir il (première colonne) ne reçoit pas rendu à la page du tout. Reste de la grille est très bien.

Quel pourrait être le problème?

@{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();}
Était-ce utile?

La solution

J'ai déménagé d'utiliser la grille de MvcContrib car il ne fait pas beaucoup de sens dans la grille que nous avons.

En tout cas problème est le code dans la question ne retourne pas html mais met le code directement dans le flux de réponse. Et le code pour les colonnes représenter à l'aide qui a mis razor son code dans le flux chaque fois appelé. il finit par mettre les colonnes dans le flux avant que la grille est rendue.

Il a été décidé de ne pas en utilisant le code de rasoir dans l'action appelée par la grille.

Autres conseils

Ok je l'ai eu à travailler pour moi avec les éléments suivants

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

Vous pouvez faire une colonne personnalisée pour obtenir ce que vous voulez:

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

De: MvcContrib Grille Colonnes personnalisées (Razor)

Je l'ai fait lors du portage des pages .aspx Razor.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top