Je veux écrire un moteur d'affichage personnalisé qui renvoie du texte personnalisé (comme délimité par des virgules). Quelqu'un sait-il comment modifier le moteur d'affichage à la volée pour gérer cela ?
Réponses
Trop de publicités?Je créerais un ActionResult personnalisé. J'utilise la fonction Json() pour retourner un JsonResult quand j'ai besoin de JSON comme réponse. J'utilise ce code pour remplir un arbre ExtJS en utilisant des données JSON.
public JsonResult Folders(string node)
{
var relativePath = (node == "root") ? "" : node;
var path = Path.Combine(BASE_PATH, relativePath);
var folder = new DirectoryInfo(path);
var subFolders = folder.GetDirectories();
var folders = new List<ExtJsTreeNode>();
foreach (var subFolder in subFolders)
{
folders.Add(new ExtJsTreeNode(subFolder.Name, subFolder.FullName.Replace(BASE_PATH, ""), "folder"));
}
return Json(folders);
}
private class ExtJsTreeNode
{
public string text { get; set; }
public string id { get; set; }
public string cls { get; set; }
public ExtJsTreeNode(string text, string id, string cls)
{
this.text = text;
this.id = id;
this.cls = cls;
}
}
Un exemple d'un ActionResult personnalisé aquí .
Votre contrôleur ne devrait pas savoir ou se soucier de cela, autre que de savoir à quelle vue envoyer les données. La vue peut rendre les données dans n'importe quel format imaginable. J'ai des vues qui émettent du RSS (XML), etc. Dans le contrôleur, il faut soit l'envoyer à la vue par défaut, soit identifier explicitement la vue cible.