MVC etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
MVC etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

7 Eylül 2018 Cuma

ASP.NET MVC MaskedTextBox Kullanımı

Mvc'de masked Input kullanılabilmesi için ilk olarak projeye iki script dahil edilmelidir.

Bunlar; jquery-1.8.3.min.js ve jquery.maskedinput.min.js

İndirme Linki: http://s7.dosya.tc/server9/ou9n4k/masked.rar.html

Örnekte telefon numarası için masked kullanılmıştır.

View 
id = "phone" kısmına dikkat edilmeli. Buraya verdiğimiz isme göre sayfada javascript çağırılacak.
<div class="form-group">
                    <label>Telefon Numaranız</label>
                    @Html.TextBoxFor(a => a.telefon, new { @class = "form-control", @type = "text", id = "phone" })
                </div>


Javascript

İndirilen javascript dosyaları projeye dahil edilmeli. Phone id'li textbox yakalanır ve mask özelliği belirlenir. "999/999/9999" telefon için kullanılmıştır, farklı versiyonları kullanılabilir. Mask'ın içine yazılan şema geçerli olacaktır.



<script src="~/Content/Js/masked/jquery-1.8.3.min.js"></script>
<script src="~/Content/Js/masked/jquery.maskedinput.min.js"></script>
<script type="text/javascript">
jQuery(function($){
   $("#phone").mask("999/999/9999");
});
</script>



Paylaş:

Birbirine Bağlı Dropdown Kullanımı MVC

Örnek uygulamada ile göre ilçe seçtirilerek kullanıcının ikametgarhId bilgisine ilçeıd yazdırılması gösterilmiştir. Birbirine bağlı dropdown kullanımına örnektir.


View

İlçe dropdown'unda " @Id = "ikametgahId"" kısmına dikkat edilmelidir. Buraya verceğimiz id'yi sayfanın altında javascritte kullanacağız.
Şehir drop'unda ise controller tarafında tanımladığımız ViewBag.SehirList'i çağırıyoruz.

  <div class="form-group col-md-6">
                    <div class="editor-label">
                        <br />
                        @Html.Label("Şehir")<br />
                    </div>
                    <div>
                   
                        @Html.DropDownList("Sehir", (IEnumerable<SelectListItem>)ViewBag.SehirList, "-- Şehir Seçiniz  --", new { style = "width:250px" })
                    </div>
                    <div class="editor-label">
                        <br />
                        @Html.Label("İlçe")<br />
                    </div>
                    <div>

                        @Html.DropDownListFor(x => x.ikametgahId, new SelectList(string.Empty, "Value", "Text"), "-- İlçe Seçiniz --",
               new { style = "width:250px", @Id = "ikametgahId" })
                    </div>
                </div>

View'de kullanılacak olan script


<script type="text/javascript">
    $(document).ready(function () {
        //Şehir seçilince
        $("#Sehir").change(function () {
            $("#ikametgahId").empty();
            $.ajax({
                type: 'POST',
                url: '@Url.Action("Ilce")', // İlçe metoduna git
                dataType: 'json',
                data: { id: $("#Sehir").val() },
                // Sehir id'ye göre veri getir.

                success: function (states) {
                    $.each(states, function (i, state) {
                        $("#ikametgahId").append('<option value="' + state.Value + '">' +
                             state.Text + '</option>');
                    });
                },
                error: function (ex) {
                    alert('Veri bulunamadı.' + ex);
                }
            });
            return false;
        })
    });
</script>


Controller

Controllerde dikkat edilmesi gereken noktalar,

1-Dış dropdown olan il için tanımlı actionda doldurma verisinin ayarlanması (ViewBag.SehirList).
2-İç dropdown olan ilçe için ilçe ve ilçegetir metotlarının tanımlanması.
.

        public JsonResult Ilce(string id)
        {
            List<SelectListItem> ilceler = new List<SelectListItem>();
            var ilceList = this.IlceGetir(Convert.ToInt32(id));
            var ilceData = ilceList.Select(m => new SelectListItem()
            {
                Text = m.IlceName,
                Value = m.Id.ToString(),
            });
            return Json(ilceData, JsonRequestBehavior.AllowGet);
        }

        public IList<Ilce> IlceGetir(int id)
        {
            return db.Ilces.Where(m => m.SehirId == id).ToList();
        }


        public ActionResult ProfilDuzenle(int id)
        {


            ViewBag.SehirList = new SelectList(db.Sehirs.Select(l => new
            {
                l.Id,
                l.SehirName

            }), "Id", "SehirName");

            Uye u = db.Uyes.Where(x => x.UyeID == id).SingleOrDefault();
            return View(u);
        }







Paylaş:

4 Eylül 2018 Salı

MVC Çoklu Resim Ekleme

MVC projelerinde çoklu resim ekleme kodları aşağıda yer almaktadır.

 View  

 <input type="file" name="resimDeneme" multiple="multiple" class="form-control" />
 <button type="submit" value="Yukle" class="btn green">Kaydet</button>

Dikkat edilmesi gereken iki kısım bulunmakta. İlk olarak "name" özelliği, ikinci olarak çoklu resim ekleyeceğimizi belirten multiple="multiple" .

Controller



 [HttpPost]
        public ActionResult ResimEkle(HttpPostedFileBase[] resimDeneme)
        {
         
            if (resimDeneme != null)
            {

                try
                {
                    foreach (HttpPostedFileBase item in resimDeneme)
                    {
                        string dosyaAdi = Guid.NewGuid().ToString() + Path.GetExtension(item.FileName);
                        item.SaveAs(Server.MapPath("~/Content/Resimler/") + dosyaAdi);
                        Resim rs = new Resim();
                        rs.resimAd = dosyaAdi;
                       
                        db.Resims.Add(rs);
                       
                        db.SaveChanges();
                    }
                   
                }
                catch (Exception)
                {
                 
                }

                return Redirect("/Resim/Index" );
            }

Controller kısmındaki HttpPostedFileBase[] bize bir resim dizisinin geleceğini gösteriyor. resimDeneme ise dizinin ismi ve View'de  belirttiğimiz class'a verdiğimiz isimle aynı olmalı.

Daha sonra liste dolu mu ona bakıyoruz ve listenin elemanlarını foreach ile tek tek kaydediyoruz.  Guid.NewGuid()  resimleri  tekrar isimlendirmek için kullanılan bir yapı. İstenirse kullanılmayıp sadece item.Filename kullanılabilir.






Paylaş:

17 Ağustos 2018 Cuma

Mvc Excel Çıktısı Alma ve Türkçe Karakter Sorunu Çözümü


MVC'de pratik bir şekilde excel çıktı alma kodları aşağıdadır. Yapılması gereken veriyi seçmek ve giridlere doldurmaktan ibarettir. Ayrıca kullanıcıların çoğu Türkçe karakter sorunu yaşamakta. Yazıda Türkçe karakter sorununun giderilme yoluna da örnek verilmiştir.

View:

 <a class=" btn btn-circle green btn-outline btn-sm"               
 href="/Sugar/GridExportToExcel/@id" 
Excel Çıktısı</a>

Controller:


public ActionResult GridExportToExcel(int id)  
        {

            Kullanici k=DB.EF.Kullanici.Where(x=>x.kullaniciID==id).SingleOrDefault();  
                string dosyaAdi = "Şeker Ölçüm Değerleri "+k.kullaniciAd + k.kullaniciSoyad;
               
//Exceli dolduracak veri oluşturulur

 var table = DB.EF.SekerOlcum.Where(x => x.kullaniciId == id).Select(x=> new { x.Kullanici.kullaniciAd, x.Kullanici.kullaniciSoyad,x.olcumTur,x.tarih
                }).ToList();
                var grid = new GridView();
                grid.DataSource = table;
                grid.DataBind();

                Response.ClearContent();

//Excel Dosya adı belirlenir

                Response.AddHeader("content-disposition", string.Format("attachment; filename=" + dosyaAdi + ".xls"));

                Response.ContentType = "application/ms-excel";
//Türkçe karakter sorunu varsa kullanılır.

Response.ContentEncoding = System.Text.Encoding.Unicode;
                Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());

                StringWriter sw = new StringWriter();
                HtmlTextWriter htw = new HtmlTextWriter(sw);

                grid.RenderControl(htw);

                Response.Write(sw.ToString());
                Response.End();
                return View();
        }

Paylaş:

7 Ağustos 2018 Salı

Forms Authentication - MVC Login Kontrolü

Forms Authentication kısaca form doğrulama mekanızması olarak düşünülebilir. MVC projelerinde cookie kullanılacağında bu yapıya başvurulması gerekmektedir.

Login işlemi gerçekleştiğinde kullanıcı adı ve şifre doğru ise aşağıdaki kod satırı ile cokie'ye kullanıcının bilgileri atılabilir. Örnekte giriş yapan kullanıcının eposta adresi kullanılmıştır.

FormsAuthentication.SetAuthCookie(eposta, true);


Ardından session controlünün yapılacağı bir filter class oluşturulmalıdır. Bu sayede üye girişi isteyen actionlar kontrol edilebilir hala gelecektir.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace xxxx
{
    public class _SessionController
    {

    }

    class _SessionControlAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (!HttpContext.Current.User.Identity.IsAuthenticated)
            {
                if (!HttpContext.Current.Response.IsRequestBeingRedirected)
                    filterContext.HttpContext.Response.Redirect("/Giris/Index");

            }

        }
    }

}

Giriş kontrol işlemleri tamamlandı. Fakat bu haliyle proje çalıştırıldığında   "HttpContext.Current.User.Identity.IsAuthenticated" sürekli boş olarak gelecektir ve giriş bilgileri doğru olsa bile giriş if'in içerisine girerek sizi giriş ekranına yönlendirecektir. Bunun çözümü ise webconfig ayarlarıyla olmaktadır.


<system.web>
    <authentication mode="Forms">
      <forms loginUrl="~/Giris/Index/" timeout="2880"/>
    </authentication>
  </system.web>

Bu ayardaki loginUrl; giriş sayfası, timeout ise cookinin bellekte tutulma süresidir. Authentication yapısının çalışması için bu özelliklerin tanımlanması zorunludur.

Çıkış işlemi için ise yine bu yapının sağladığı yardımı ile  cookiye son verilmektedir. Sadece action içine aşağıdaki satırın yazılması ve gerekli yönlendirmenin yapılması yeterlidir.


 FormsAuthentication.SignOut();

Authentication yapısı burada anlatılandan daha komplike ve tüm isteklerinizi karşılayacak bir yapı. ol yönetiminde kullanılan location gibi daha bir çok özelliği yer almaktadır. Bunlara göz atabilirsiniz.
Paylaş:

11 Eylül 2017 Pazartesi

MVC Proje Oluşturma - _Layout Ekleme

Yeni bir MVC projesi oluştururken yapılacaklar adım adım anlatılacaktır.  İlk olarak boş bir MVC projesi açılır.
  • Projede kullanılacak classlar için Classes klasörü eklenir.
  • Projede kullanılacak olan temanın içeriğinin yer alacağı Content klasörü eklenir.
  • Reverse Enginnerr code first ile veri tabınımız Entity Framework aacılığıyla projeye eklenir.
  • web configde connectionStrings bağlantısının yolu düzenlenir, kendi sqlimize uygun hale getirilir.

Proje ilk açıldığında genel olarak yapılması gerekenler bunlardan ibaret. Her projeye başlandığında bu işlemler yapılırsa bir süre sonra el çabukluğu oluşacaktır.

MVC MasterPage

ASP'deki masterpage'in karşılığı MVC'de layouttur. Layoutlar genelde Viewlerin içinde oluşturacağımız Shared klasörünün içinde bulunur. Shared isimli bir klasör oluşturarak _Layout isimli bir parçalı view projeye eklenir. Layout'un başındaki alttire view'in parçalı olduğunu belirtmek için kullanılır. Genel kullanım olarak tüm parçalı viewlere alttire eklemekte payda var.


<section class="content">
                @RenderBody()
 </section>

Layout'umuzun tasarım kısmını aldıktan sonra sıra Asp'deki contentcplaceholder olarak bildiğimiz değişken parçayı belirlemekte. MVC'de buna karşılık gelen satır @RenderBody()'dir. Renderbody ile viewlerimizde değişmesini istediğimiz içerikleri yazabileceğiz.

MVC'de ASP'den farklı olarak sadece bir tane değişken alan tanımlanabilir. Yani tek RenderBody kullanılabilir. Peki birden çok değişen alan istediğimizde ne yapacağız? Bu sefer de yardımımıza bu satır yetişmekte.


@RenderSection("CSS", false)

CSS olarak yazdığımız için contentimizin adı oluyor. Yani buraya css ile ilgili ekleyeceğimiz değişken satırları ekleyebiliyoruz. False ise bu section'un zorunlu olup olmadığını belirtmek için kullanılıyor. Default kullanımı false'dur yani her viewde bu section'ın olması zorunlu değil şekilde ayarlanmıştır. Biz de genelde hep bu şekilde kullanacağız.

Son olarak;


Views'in altındaki Web Configin içerisine namespace olarak projemizin model dosyasını ekliyoruz.



  <add namespace="kuzyyeliebru.Models"/>

Paylaş: