簡體   English   中英

從MVC的下拉列表中獲取價值

[英]Get Value from Dropdown List in MVC

提交后,聯系表單將發送一封電子郵件到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”?

您可以在UmbracoHelper上使用名為.GetPreValueAsString(id)的方法,並傳入預值的ID。

UmbracoHelper可以作為SurfaceController繼承自的PluginController上名為“ Umbraco”的屬性使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM