none
ASP.NET MVC Modal JSON Mail RRS feed

  • Soru

  • Merhaba başlığı biraz daha açacak olursam :)

    Sitede bir JS Modal var açıldığı zamanda form çıkıyor. Formda İsim Soyisim ve bir adet file upload mevcut. File upload olmadan verileri mail olarak gönderebiliyorum fakat dosya eklemek istenirse nasıl bir yol izlemeliyim. Dosya da mail olarak gidecek.

    Teşekkürler 

    30 Haziran 2015 Salı 17:12

Yanıtlar

  • JS tarafında FormData olarak gönder. FormData içerisine dosyanıda ekleyip FormData objesini JSON olarak çevir ve AJAX ile POST ettir. Örnek olursa FormData kullanan birisi var. Yazıya göz atmak için https://cmatskas.com/upload-files-in-asp-net-mvc-with-javascript-and-c/  adresinden ulaşabilirsin. FormData içerisine değil de FormData yı form nesnesinden alıp içerisine sen dosya ekleyebilirsin ve sonra FormData objesini JSON a çevirip POST ettirebilirsin. Fakat anlamadığım neden JSON String olarak atıyorsun? FormData olarak gönderdiğinde MVC otomatik belirttiğin Types a çeviriliyor.

    Barış Ceviz - Software Developer
    Web Blog Adresi


    2 Temmuz 2015 Perşembe 04:01
    Moderatör

Tüm Yanıtlar

  • @using(Html.BeginForm(null, null, FormMethod.Post, new{ @enctype="multipart/form-data" }))
    {
         ...
         <input type="file" name="dosya" />
        ...
    }

    öncelikle enctype vermelisin.

    Attach etmek , maili nasıl gönderdiğine bağlı, WebMail kullanıyorsan gelen stream'i Attachment listesine eklemen yeterli.


    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    1 Temmuz 2015 Çarşamba 06:45
    Moderatör
  • Önay bey merhaba,

    Linke tıklandığı zaman sayfada bir Modal açılıyor. Modal içerisinde işlem gerçekleşecek. Modalın kapanmaması gerekiyor. O yüzden JSON ile verileri gönderip geriye cevap döndürmek istiyorum. 

            <script>
                $(function () {
                    $("#rontgenClick").click(function () {
    
                        var rontgen = getRontgen();
    
                        if (person == null) {
                            $("#resultMessage").html("Lütfen tüm alanları doldurun.");
                            return;
                        }
    
                        var json = $.toJSON(ddata);
    
                        $.ajax({
                            url: '/RontgenGonder',
                            type: 'POST',
                            dataType: 'json',
                            data: json,
                            contentType: 'application/json; charset=utf-8',
                            success: function (data) {
                                // get the result and do some magic with it
                                var message = data.Message;
                                $("#resultMessagee").html(message);
                            }
                        });
                    });
                });
    
                function getRontgen() {
                    var adi = $("#adi").val();
                    var telefon = $("#telefonu").val();
                    var mail = $("#mailim").val();
                    var sehir = $("#sehir").val();
                    var sikayet = $("#sikayet").val();
                    var tarih = $("#tarih").val();
                    var file = $("#UploadedFile").val();
    
                    return (adi == "") ? null : { Adi: adi, Telefon: telefon, Mailim: mail, Sehir: sehir, Sikayet: sikayet, Tarih: tarih, File: file };
                }
            </script>

    <div class="md-modal md-effect-11" id="modal-2">
                <div class="md-content">
                    <h3>RÖNTGEN GÖNDER</h3>
                    <div class="rontgen-gonder">
                        @using (Html.BeginForm(null, null, FormMethod.Post, new { @enctype = "multipart/form-data" }))
                        {
                            <p>Röntgen filminizi gönderin size uygun tedavi yöntemlerini bulalım.</p>
    
                            <input class="sizText" type="text" id="adi" name="adi" placeholder="Adım & Soyadım" />
                            <input class="sizText" type="text" id="telefonu" name="telefonu" placeholder="İrtibat Numaram" />
                            <br />
                            <input class="sizText" type="text" id="mailim" name="mailim" placeholder="Mail Adresim" />
                            <input class="sizText" type="text" id="sehir" name="sehir" placeholder="Yaşadığım Şehir" />
                            <br />
                            <p>Yaptırmak istediğiniz tedavi ve şikayetleriniz</p>
                            <br />
                            <input class="sizText" type="text" id="sikayet" name="sikayet" />
                            <br />
                            <p>Röntgeni çekildiğiniz tarih</p>
                            <br />
                            <input class="sizText" type="text" id="tarih" name="tarih" placeholder="RÖNTGENİN ÇEKİLDİĞİ TARİH" />
                            <br />
                            <input type="file" id="UploadedFile" multiple />
                            <br />
                            <input class="button" type="submit" value="Gönder" id="rontgenClick" />
                        }
                    </div>
                    <div>
                        <span id="resultMessagee"></span>
                    </div>
                </div>
            </div>

    Bu işlemi dosya yükleme veya mailde ek olarak gönderme olmadan yapabiliyorum. İsim Soyisim gibi bilgileri alıp mail olarak gönderebiliyorum. Fakat maile ek olarak birde dosya eklemem gerekiyor. 

    1 Temmuz 2015 Çarşamba 08:47
  • Demek istediğin şey ajax ile file post etmek istiyorum değil mi?
    1 Temmuz 2015 Çarşamba 12:49
  • Evet.
    1 Temmuz 2015 Çarşamba 12:50
  • Birkere bende yapacaktım çok fazla araştırmadım fakat ajaxla dosya göndermek için biraz sıkıntılı saırım net oalrak yapılabilliyor mu bilmiyorum. İşin içerisine iFrame v.s. sokarak iframe içerisinden normal form post yaparak v.s. v.s. de çözebilirmiş.

    Sonuç olarak ben ajaxla yapmamıştım.

    1 Temmuz 2015 Çarşamba 15:48
  • Yani bu işlemi normal post ile gerçekleştirmekte problem yok fakat Modal açıldığı için sayfada işlem modal kapanmadan gerçekleşmesi gerekiyor. Frame ile çözüm belki olur fakat çok sağlıklı görünmüyor. Birde mobil tarafında problemler oluyor framede. Bunun bir yöntemi olması gerekiyor. 
    1 Temmuz 2015 Çarşamba 21:33
  • JS tarafında FormData olarak gönder. FormData içerisine dosyanıda ekleyip FormData objesini JSON olarak çevir ve AJAX ile POST ettir. Örnek olursa FormData kullanan birisi var. Yazıya göz atmak için https://cmatskas.com/upload-files-in-asp-net-mvc-with-javascript-and-c/  adresinden ulaşabilirsin. FormData içerisine değil de FormData yı form nesnesinden alıp içerisine sen dosya ekleyebilirsin ve sonra FormData objesini JSON a çevirip POST ettirebilirsin. Fakat anlamadığım neden JSON String olarak atıyorsun? FormData olarak gönderdiğinde MVC otomatik belirttiğin Types a çeviriliyor.

    Barış Ceviz - Software Developer
    Web Blog Adresi


    2 Temmuz 2015 Perşembe 04:01
    Moderatör