Question

SALUT,

Je suis sûr que je suis absent quelque chose de très évident ici, donc s'il vous plaît pardonnez-moi.

  • Je suis à l'aide d' MVC 2 Beta et j'ai un modèle qui a plusieurs propriétés, des chaînes de caractères, entiers, etc.les trucs habituels.
  • Il dispose également d'un tableau d'octets qui contient une image.
  • J'ai une modification de la méthode d'action sur mon contrôleur décorées avec un [HTTPGet] attribut.
  • La méthode passe le modèle de la vue, qui est une forme qui a l'habitude des zones de texte qui se lient aux différentes propriétés de la chaîne et un élément img est lié au tableau d'octets/image.

Tout cela fonctionne comme il se doit et je vois toutes les données, y compris l'image.C'est toutes les choses assez standard.

Mais, lorsque l'utilisateur soumet le formulaire à mon [HTTPPost] la version de la méthode d'action qui accepte le même modèle que son paramètre de l'image de la propriété est null.c'est à direl'image de la propriété ne semble pas faire partie de la liaison de modèle.

Dans le cours normal des événements qui nous ferait certains de validation et de passer le modèle de la vue pour être rendu à l'utilisateur de voir si les modifications ont été réussie ou non.Mais juste en passant le modèle de "comme" - le point de vue n'est pas le rendu de l'image à nouveau, car il n'est plus dans le modèle.

Je sais que je peux aller chercher l'image à nouveau (à partir de la base de données ou à l'endroit où) et de la remettre dans le modèle avant de passer à la vue, mais c'est que le droit stratergy ou ai-je raté quelque chose?

En ce qui concerne, Simon

Était-ce utile?

La solution

Comment rendre l'image qui est contenue sous forme de données binaires dans le modèle?Utilisez-vous classique webforms contrôles (ce serait pas recomded mvc terminologie)?De toute façon, si l'image n'est affichée dans la vue, il n'est pas affiché lorsque l'utilisateur soumet le formulaire, car seuls les champs de saisie (cases à cocher, champs de texte, les hiddens) sont soumis au serveur.élément d'image n'est pas.Rappelez-vous que dans le MVC c'est simple HTML fait tout le travail de publication des données vers le serveur il n'y a pas de viewstate ni automatique publication qui permettra de conserver l'état des commandes.Vous avez deux solutions:

  1. Encoder des données binaires dans certains champ caché, de sorte qu'il serait affiché à nouveau.
  2. (mieux) de Ne pas envoyer les données de l'image en arrière-et-vient entre le client et le serveur, mais de détecter si l'utilisateur a fourni une nouvelle image (j'espère que vous vous aimeriez utiliser le fichier en entrée) et si l'utilisateur a quitté le fichier d'entrée vide, puis mettre à jour le modèle avec l'image déjà stockées dans la base de données pour l'afficher à nouveau.Sinon mise à jour de l'image dans la base de données.

De toute façon, je suis curieux de savoir comment afficher une image à partir des données binaires dans le modèle.Je pense qu'il serait plus simple de créer de l'action du contrôleur qui retourne des données binaires vous pouvez utiliser l'URL de cette action dans l'attribut src de la balise img, ou de stocker des images en tant que fichiers et d'utiliser l'URL au lieu de données binaires.

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