2017-11-02 30 views
0

드롭 다운 선택에 따라 특정 전자 메일 주소로 전자 메일을 리디렉션하고 싶습니다. 이메일을 [email protected]으로 보내거나 이메일 드롭 다운에서 선택한 정보가 [email protected]으로 이동해야합니다. 이미 양식을 만들었지 만 MVC actionResult 및 @Razor보기를 사용하여이 작업을 수행하는 방법을 잘 모릅니다MVC보기의 드롭 다운 선택을 기반으로 전용 전자 메일 주소로 전자 메일을 보내려면 어떻게해야합니까?

내보기

@model ETWServices.Models.ContactUs 
@{ 
    var culture = System.Threading.Thread.CurrentThread.CurrentUICulture.Name.ToLowerInvariant(); 
} 
<div class="cards"> 
    <div class="card"> 

     <div id="contact-form" class="clearfix"> 
      @Html.ValidationSummary(true) 
      @using (Html.BeginForm()) 
      { 
       <h1> 
        @Resources.ResContact.Title 
       </h1> 

         <div class="editor-label"> 
          @Html.LabelFor(model => model.Name) 
         </div> 
         <div class="editor-field"> 
          @Html.TextBoxFor(model => model.Name) 
          @Html.ValidationMessageFor(model => model.Name) 
         </div> 
         <div class="editor-label"> 
          @Html.LabelFor(model => model.Email) 
         </div> 
         <div class="editor-field"> 
          @Html.TextBoxFor(model => model.Email) 
          @Html.ValidationMessageFor(model => model.Email) 
         </div> 
         <div class="editor-label"> 
          @Html.LabelFor(model => model.Subject) 
         </div> 
         <div class="editor-field"> 
          @Html.TextBoxFor(model => model.Subject) 
          @Html.ValidationMessageFor(model => model.Subject) 
         </div> 
         <div class="editor-label"> 
          @Html.LabelFor(model => model.Message) 
         </div> 
         <div class="editor-field"> 
          @Html.TextAreaFor(model => model.Message) 
          @Html.ValidationMessageFor(model => model.Message) 
         </div> 
         <p> 
          <div class="submit"> 
           <input type="submit" value="@Resources.ResContact.Send" id="btnSubmit" /> 
          </div> 
         </p> 
       } 

     </div> 

    </div> 

</div> 

저희에게 연락는 컨트롤러

,
[HttpPost] 
      public ActionResult Contact(ContactUs contUs) 
      { 
       if (ModelState.IsValid) 
       { 
        try 
        { 
         MailMessage mailMsg = new MailMessage(); 
         mailMsg.From = new MailAddress(contUs.Email); 
         mailMsg.To.Add("[email protected]"); 
         mailMsg.Subject = contUs.Subject; 
         mailMsg.Body = contUs.Message; 

        SmtpClient smtp = new SmtpClient(); 

        smtp.Host = "smtp.gmail.com"; 
        smtp.Port = 587; 
        smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "gmailpassword"); 
        smtp.EnableSsl = true; 
        smtp.Send(mailMsg); 
        ModelState.Clear(); 

       } 
       catch (Exception ex) 
       { 
        ModelState.Clear(); 
        ViewBag.Message = " Sorry we are facing Problem here "; 
       } 
      } 
      return View(); 
     } 

은 저희에게 연락 모델

public class ContactUs 
    { 
     [Display(Name = nameof(Resources.ResContact.Name), ResourceType = typeof(Resources.ResContact))] 
     [Required(ErrorMessageResourceType =typeof(Resources.ResContact), 
      ErrorMessageResourceName = nameof(Resources.ResContact.NameReq))] 
     [StringLength(20, MinimumLength = 5,ErrorMessageResourceType =typeof(Resources.ResContact), 
      ErrorMessageResourceName = "NameShort")] 
     public string Name { get; set; } 

     [Display(Name = "Email", ResourceType =typeof(Resources.ResContact))] 
     [Required(ErrorMessageResourceType = typeof(Resources.ResContact), 
      ErrorMessageResourceName = "Emailrequired")] 
     [RegularExpression("[email protected]+\\..+", ErrorMessageResourceType = typeof(Resources.ResContact), 
            ErrorMessageResourceName = "EmailWrong")] 
     public string Email { get; set; } 

     [Required(ErrorMessageResourceType =typeof(Resources.ResContact), 
      ErrorMessageResourceName ="subjectRequired")] 
     [Display(Name = "Subject", ResourceType = typeof(Resources.ResContact))] 
     public string Subject { get; set; } 

     [Required(ErrorMessageResourceType = typeof(Resources.ResContact), 
      ErrorMessageResourceName = "msgRequired")] 
     [Display(Name = "Message", ResourceType = typeof(Resources.ResContact))] 
     public string Message { get; set; } 

    } 

답변

0

간단한 솔루션은 양식에 SELECT 요소를 추가 SELECT 요소 이름 속성 값과 일치되는 뷰 모델에 새로운 속성을 추가합니다.

<SELECT name="toAddress"> 
    <option value="info">Info</option> 
    <option value="general">General</option> 
</SELECT> 

이제 사용자가 양식을 제출하면

public class ContactUs 
{ 
    public string ToAddress { set;get;} 
    // your existing properties goes here 
} 

지금, 재산 ToAddress하여 메소드 매개 변수가 선택된 값 (info 또는 general)을해야합니다 같은 이름의 뷰 모델에 하나 개의 속성을 추가 ,. 전체 이메일 주소를 작성하는 데 더 사용할 수 있습니다.

[HttpPost] 
public ActionResult Contact(ContactUs contUs) 
{ 
    var toSelection = contUs.ToAddress; 
    //use this as needed 
} 

여기서 우리는 2 가지 옵션으로 SELECT 요소를 하드 코딩했습니다. 그러나 도우미 메서드 DropDownListFor을 사용하는 것과 같이 드롭 다운을 렌더링하는 다른 방법이 있습니다.