IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

Envoi de mail MVC3


Sujet :

ASP.NET MVC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 47
    Par défaut Envoi de mail MVC3
    Bonjour à tous,

    Je suis en train d'ajouter une fonctionnalité à mon site, en fait à côté de chaque client présent sur ma page "Index", j'ai rajouté une option "Mail" en plus de "edit","detail","delete" qui me permettra d'envoyer un mail à ce client...

    Seulement j'ai un petit soucis lorsque je tente de récupérer le corps du message que l'utilisateur encode... Voici les classes rentrant en compte:

    Controlleur "Client" (Juste les méthodes dont j'ai besoin)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    public ActionResult Mail(int id)
            {
                Customer customer = db.Customers.Find(id);
                return View(customer);
            }
     
            [HttpPost,ActionName("Mail")]
            public ActionResult MailConfirmed(int id)
            {
                Customer customer = db.Customers.Find(id);
                string message = Request.Form.Get("messageBody");//C'est ici que je tente de récupérer le message
                if(message!=null)
                {
                    System.Diagnostics.Debug.WriteLine(message);
                    SendMail(customer.Mail, customer.Name, message);
                    return RedirectToAction("Index");  
                }
                else
                {
                    ModelState.AddModelError("", "Veuillez rentrer un message SVP"); 
                }
                return View(customer);
            }

    "View Mail"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    @model TennisOnline.Models.Customer
     
    @{
        ViewBag.Title = "Mail";
    }
     
    <h2>Mail</h2>
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
     
       @using (Html.BeginForm())
       {
           <fieldset>
               <legend>Customer</legend>
     
               <div class="display-label">Pin</div>
               <div class="display-field">
                   @Html.DisplayFor(model => model.Pin)
               </div>
     
               <div class="display-label">Name</div>
               <div class="display-field">
                   @Html.DisplayFor(model => model.Name)
               </div>
     
               <div class="display-label">FirstName</div>
               <div class="display-field">
                   @Html.DisplayFor(model => model.FirstName)
               </div>
     
               <div class="display-label">Mail</div>
               <div class="display-field">
                   @Html.DisplayFor(model => model.Mail)
               </div>
     
               <div class="display-label">Address</div>
               <div class="display-field">
                   @Html.DisplayFor(model => model.Address)
               </div>
     
               <div class="display-label">City</div>
               <div class="display-field">
                   @Html.DisplayFor(model => model.City)
               </div>
     
               <div class="display-label">PostalCode</div>
               <div class="display-field">
                   @Html.DisplayFor(model => model.PostalCode)
               </div>
     
               <div class="display-label">PhoneNumber</div>
               <div class="display-field">
                   @Html.DisplayFor(model => model.PhoneNumber)
               </div>
     
               <div class="display-label">AffiliationNumber</div>
               <div class="display-field">
                   @Html.DisplayFor(model => model.AffiliationNumber)
               </div>
     
               <div class="display-label">Authorized</div>
               <div class="display-field">
                   @Html.DisplayFor(model => model.Authorized)
               </div>
     
     
               <div class="display-field">
                   @Html.TextBox("messageBody","") //TextBox où l'user encode son message
               </div>
     
     
           </fieldset>
       }
    @using (Html.BeginForm())
    {
        <p>
             <input type="submit" value="Mail" />
            <div>
                @Html.ActionLink("Back to List", "Index")
            </div>
       </p>
    }
    Vous pouvez m'aider SVP ? Je vous en serais très reconnaissant En gros, comment récupérer le message que l'user encode dans la textbox ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Par défaut
    Bonjour, tout simplement en récupérant l'objet FormCollection :

    Au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public ActionResult MailConfirmed(int id)
    Tu peux mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public ActionResult MailConfirmed(int id, FormCollection formulaire)
    {
         string message = formulaire["messageBody"]
    }

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Salut,

    Bon plusieurs remarques: tout d'abord ta zone de saisie n'est pas dans le formulaire, donc ne sera jamais postée, remonte donc ton begin form.

    De plus, ta textbox doit être de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @Html.TextBoxFor(model => model.MessageBody)
    Ensuite, pour poster un objet riche en mvc, une des solutions possibles est de le faire directement dans la signature de ta méthode, mvc fera automatiquement un mapping entre les noms des champs postés et ceux de ton modèle.

    Dans ton cas, cela pourrait être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public ActionResult MailConfirmed(TennisOnline.Models.Customer modelPoste)
    {
        ..le reste de ton code
    }
    => l'avantage de cette solution: plus de magic-string pour mapper les champs.

    Voila, pense à faire un petit tour sur les différents tutoriaux..

Discussions similaires

  1. Envoi de mail au format html
    Par Mephyston dans le forum C++Builder
    Réponses: 2
    Dernier message: 22/01/2004, 12h29
  2. Envoi de mail au format Rich-Text
    Par LineLe dans le forum ASP
    Réponses: 4
    Dernier message: 29/10/2003, 16h27
  3. envoi de mail avec attachement de fichier
    Par GMI3 dans le forum Modules
    Réponses: 2
    Dernier message: 24/09/2003, 11h22
  4. Outlook ne se ferme pas après un envoi de mail
    Par Joke dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/06/2003, 17h32
  5. envoi de mail, protocol SMTP langage C
    Par Heimdall dans le forum Développement
    Réponses: 2
    Dernier message: 23/05/2003, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo