Question

Je cherche des suggestions sur la façon de s'y prendre. Toute entrée est appréciée!

Actuellement, j'ai une application ASP.NET MVC. Sur le client, j'ai un lien avec l'ID d'un document XPS. Lorsque l'utilisateur clique sur le lien, il est dirigé vers une page contenant des détails sur le document. Outre ces informations, je souhaite afficher le document à côté de ces informations, sur la même page.

Du côté serveur, une fois que j'ai l'ID, je peux obtenir le document, sérialisé sous forme de tableau d'octets, à partir de la base de données. La question est la suivante: quel est le meilleur moyen d’obtenir ce document sérialisé dans la page Web?

Je préférerais VIVEMENT éviter de devoir déposer ce document dans le système de fichiers, puis de créer un chemin de fichier. Je souhaite pouvoir diffuser le document en continu sur le navigateur sous forme de type de contenu "application / vnd.ms-xpsdocument".

J'ai essayé d'utiliser un contrôle Web pour gérer cela (je ne peux pas écrire de binaire), je pensais créer un gestionnaire HTTP pour le faire (je ne sais pas par où commencer), et je me suis laissé berner récupérez le flux de documents vers le navigateur.

En outre, la question de savoir comment intégrer le document à la page Web se pose également. Est-ce que j'utilise une balise EMBED? Ou un objet? Ou dois-je utiliser un iframe et définir la source pour pointer vers le document qui livre le document?

Encore une fois, je ne m'attends pas à une solution enveloppée dans un arc. Je cherche des conseils sur la façon de s'y prendre. Et, bien que cette question concerne les documents xps, elle s’applique à toute application qui diffuse un fichier binaire devant être hébergé dans un navigateur (fichiers PDF, etc.).

D'accord, comme pour l'affichage dans le navigateur, un mot: Silverlight. C'est résolu. J'ai toujours le problème de trouver le meilleur moyen de l'envoyer du serveur au navigateur.

Frappe ça. Il semble que Silverlight ne soit pas assez avancé pour afficher un document XPS pour l'instant. Je pense maintenant à un iframe pointant sur un gestionnaire http ... Le iframe fonctionne. Dommage qu'il jette le tout dans le tuyau. Je suppose que je pourrais toujours enlever la première page et envoyer ce chiot ...

Wow. Pas besoin d'un gestionnaire HTTP. Un ActionResult personnalisé dans MVC est tout ce dont vous avez besoin. Comment friggen est-ce génial?

Était-ce utile?

La solution

Je pense que le moyen le plus simple serait de fournir le document sous forme de lien (target = "_blank") à partir de la page de détails. Cela présente plusieurs avantages:

  • Vous n'avez pas besoin de récupérer et de diffuser le document entier à moins que l'utilisateur ne le demande.
  • Sur mon système, Internet Explorer au moins est déjà enregistré en tant que visualiseur XPS par défaut. Par conséquent, en laissant à la documentation sa propre fenêtre, vous évitez toute question sur la manière de l'intégrer.
  • Il est simple de fournir une source de diffusion en continu pour le document: utilisez simplement un gestionnaire HTTP avec un ID pour un paramètre de chaîne de requête.

Même si cette idée ne vous plait pas, choisissez certainement un gestionnaire HTTP pour la transmission du document. C'est très simple: lorsque vous créez un nouveau gestionnaire HTTP dans Visual Studio, vous devriez obtenir une belle page avec tout le travail déjà fait.

Autres conseils

Il existe un contrôle Silverlight capable d’afficher des documents XPS. Voir http://firstfloorsoftware.com/blog/announcement-document-toolkit- for-silverlight / pour plus

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