0

提交时,联系表单会向 web.config 文件中的指定电子邮件地址发送一封电子邮件。然而,目前它正在发布“选定服务”的 ID - 我如何获得价值呈现而不是 ID?在附加 . 看看我可以使用什么,我找不到价值。

这些值已经在 Umbraco 中使用自定义数据类型定义。

这是表面控制器;

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);
    }
   }
}

编辑:

@co0ke 当我这样做时,我得到了这个;

在此处输入图像描述

还是我应该尝试传入“1435”?

4

1 回答 1

0

您可以在 UmbracoHelper 上使用名为 .GetPreValueAsString(id) 的方法并传入预值的 id。

UmbracoHelper 可用作 SurfaceController 继承自的 PluginController 上名为“Umbraco”的属性。

于 2015-12-17T17:29:04.673 回答