Sur soumettre le formulaire de contact envoie un e-mail à l'adresse e-mail spécifié dans le fichier web.config. Cependant, en ce moment, il affiche l'identifiant des "Services sélectionnés" - comment puis-je obtenir le rendu de la valeur au lieu de l'ID? J'ai essayé de parcourir la liste après avoir ajouté le. pour voir ce qui est disponible pour moi, je ne peux pas trouver de la valeur.Obtenir la valeur à partir de la liste déroulante dans MVC
Les valeurs sont déjà définies dans Umbraco à l'aide d'un type de données personnalisé.
Voici le contrôleur de surface;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net.Mail;
using System.Text;
using System.Web;
using System.Web.Mvc;
using System.Xml.XPath;
using Umbraco.Core.Services;
using Umbraco.Web.Mvc;
/// <summary>
/// Summary description for ContactSurfaceController
/// </summary>
namespace LiquidThinker2015
{
public class ContactSurfaceController : SurfaceController
{
public object XPathModeIterator { get; private set; }
public ActionResult ShowForm()
{
ContactModel myModel = new ContactModel();
List<SelectListItem> ListOfServices = new List<SelectListItem>();
XPathNodeIterator iterator = umbraco.library.GetPreValues(1435);
iterator.MoveNext();
XPathNodeIterator preValues = iterator.Current.SelectChildren("preValue", "");
while (preValues.MoveNext())
{
string preValue = preValues.Current.GetAttribute("id", "");
ListOfServices.Add(new SelectListItem
{
Text = preValues.Current.Value,
Value = preValues.Current.GetAttribute("id","")
});
myModel.ListOfServices = ListOfServices;
}
return PartialView("ContactForm", myModel);
}
public ActionResult HandleFormPost(ContactModel model)
{
var newComment = Services.ContentService.CreateContent(model.Name + " - " + DateTime.Now.ToString("dd/MM/yyyy HH:mm"), CurrentPage.Id, "ContactFormula");
//DataTypeService myService = new DataTypeService();
//var SelectedService = myService.GetAllDataTypeDefinitions().First(x => x.Id == 1435);
//int SelectedServicePreValueId = myService.GetPreValuesCollectionByDataTypeId(SelectedService.Id).PreValuesAsDictionary.Where(x => x.Value.Value == model.SelectedService).Select(x => x.Value.Id).First();
newComment.SetValue("contactName", model.Name);
newComment.SetValue("companyName", model.Company);
newComment.SetValue("emailFrom", model.Email);
newComment.SetValue("telephoneNumber", model.Telephone);
newComment.SetValue("dropdownServices", model.SelectedService);
newComment.SetValue("contactMessage", model.Message);
Services.ContentService.SaveAndPublishWithStatus(newComment);
//Send out email
if (ModelState.IsValid)
{
var sb = new StringBuilder();
sb.AppendFormat("<p>Name: {0}</p>", model.Name);
sb.AppendFormat("<p>Company: {0}</p>", model.Company);
sb.AppendFormat("<p>Email: {0}</p>", model.Email);
sb.AppendFormat("<p>Phone: {0}</p>", model.Telephone);
sb.AppendFormat("<p>Service: {0}</p>", model.SelectedService); //THIS LINE HERE
sb.AppendFormat("<p>Message: {0}</p>", model.Message);
SmtpClient smtp = new SmtpClient();
MailMessage message = new MailMessage();
MailAddress ma = new MailAddress(model.Email);
message.Subject = ConfigurationManager.AppSettings["ContactFormSubject"];
message.To.Add(new MailAddress(ConfigurationManager.AppSettings["ContactFormTo"]));
message.CC.Add(new MailAddress(ConfigurationManager.AppSettings["ContactFormCC"]));
message.From = ma;
message.Sender = new MailAddress(model.Email);
message.Body = sb.ToString();
message.IsBodyHtml = true;
try
{
smtp.Send(message);
}
catch (SmtpException smtpEx)
{
// Log or manage your error here, then...
return RedirectToUmbracoPage(1084); // Redirect to homepage.
}
return RedirectToUmbracoPage(1454);
}
return RedirectToUmbracoPage(1454);
}
}
}
Edit:
@ co0ke quand je fais ce que je reçois ce;
Ou devrais-je essayer de passage dans "1435"?
a posté une réponse au-dessus avec une image pour la référence – MJCoder
@MJCoder - Le paramètre à la méthode GetValueAsString doit être un entier, actuellement vous essayez de passer dans une chaîne. Voici quelques informations sur la façon de convertir la chaîne en int http://stackoverflow.com/questions/1019793/how-can-i-convert-string-to-int – co0ke