Question

I ai jQuery DataTable configuré pour le traitement côté serveur sur un serveur ASP.NET MVC.

Pour l'amélioration progressive, une table HTML est rendu, puis mis à jour à un DataTable. Lorsque le DataTable fait un appel AJAX pour récupérer plus de données, il attend des éléments du retour JSON en corrélation avec la mise en page de table colonne existante.

semble pour provoquer des frictions d'architecture, parce que:

Au cours de première page rendu:

  • Le contrôleur transforme les données de base de données en DTO et établit un modèle Viewdata.
  • Le ViewPage transforme le modèle ViewData en HTML avec l'aide de HtmlHelper, etc.

Mises à jour Duriung AJAX:

  • Le contrôleur transforme les données de base de données en données table-cell, avec des liens hypertextes, etc.
  • Le DataTable rend les données renvoyées directement dans les cellules du tableau.

Le point ici est que le contrôleur est maintenant contraint à savoir à propos de la table de rendu mise en page, quand il est responsable devrait se limiter à passer en arrière DTO.

Quelle est la correct modèle ici? Comment puis-je en charge les appels AJAX et adhérer à la principale responsabilité unique dans le contrôleur?


Un peu de clarté:

Mon DTO a trois propriétés:

public class AccountListing
{
    public int Id { get; set; }
    public string AccountCode { get; set; }
    public string AccountName { get; set; }
}

Le DataTable rendu a quatre colonnes:

+--------------+--------------+------+------+
| Account Code | Account Name | View | Edit |
+--------------+--------------+------+------+
| 12345        | FooBar Inc.  | Link | Link |
+--------------+--------------+------+------+

Le ViewPage rend la propriété 3 DTO dans une table 4 de la colonne. Si le contrôleur retransmet le même 3 propriété DTO AJAX JSON, la table de données se plaint de colonnes manquantes ... la table de données JSON attend renvoyé pour représenter des éléments cellulaires, par opposition aux données source.

Actuellement, je suis en utilisant la résolution de ce tableau jQuery transforme et tableau personnalisé rendu, qui fait double emploi efficacement la logique du ViewPage.

Y at-il une alternative?

Était-ce utile?

La solution

Votre solution actuelle (faire le rendu du côté client) bon son pour moi.

La chose est, votre DTO ne doivent pas correspondre à ce que vous pensez afficher les pages. Le modèle populaire est d'avoir des objets ViewModel pour ces situations.

Par exemple:

public class AccountListingViewModel {
    public string AccountCode { get; set; }
    public string AccountName { get; set; }
    public string ViewLink { get; set; }
    public string EditLink { get; set; }
    public static AccountListingViewModel FromAccountListing(AccountListing o) {
        AccountListingViewModel returnObj = new AccountListingViewModel();
        //populate the properties from the parameter
        return returnObj;
    }
}

Voir [viewmodel] , [modèle-vue-viewmodel] .

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