BAĞLANTILARIM

Takip Edin:

0

ASP.NET MVC VIEW TARAFINDA URL ID BİLGİSİNİN RAZOR İLE ALINMASI

Çarşamba, Kasım 22, 2017 / / , , ,

Mvc yapısında Url'de bulunan id parametresinin dizin şeklinde gönderilmesi durumunda, bu bilgiye sayfa içinde kullanılmak üzere Request.QueryString[".."] tarzında erişilmek istendiğinde aşağıdaki şekilde kullanılabilir.


var id = ViewContext.RouteData.Values["id"];
int id = Convert.ToInt32(ViewContext.RouteData.Values["id"]);

 

1

ASP.NET MVC İLE SUMMERNOTE BENZERİ WYSIWYG EDİTÖRLERİN KULLANIMI

Pazar, Ekim 22, 2017 / / , , ,

Asp.Net Mvc'de Summernote aşağıdaki şekilde kullanılabilir.


Yerleşim şekli;

<textarea id="m_summernote_1" name="m_summernote_1" class="summernote"></textarea>


Controller tarafında verinin alınma şekli; [ValidateInput(false)] kullanımına dikkat.

 [HttpPost]
        [ValidateInput(false)]
        public ActionResult Ekle(FormCollection form)
        {           
                string sablon = form["m_summernote_1"];
}

0

ASP.NET MVC PROJELERİNDE PRECOMPILE İLE PERFORMANS ARTTIRMA

Salı, Eylül 26, 2017 / / , ,

Asp.net Mvc ile geliştirilen büyük projelerde her build işleminden sonra oluşan ilk yükleme yavaşlığının bir miktar önüne geçmek için Precompile Publish yöntemi kullanılabilir.

Bunun için projenin publish ekranı açılır.




Configure tıklanarak açılan ekrandan Settings sekmesindeki File Publish Options başlığı genişletilerek resimdeki ayarlar yapılır.





Publish işlemi yapılır.

Bu işlem sonunda publish klasörünüzde

- Web.config dosyasınıza ek olarak PrecompiledApp.config isimli bir dosya üretilmiş olacaktır.
- Views dosyaları içi boş olarak görünecektir.(Silinmemelidir)
- Bin klasöründe View sayfaları .compiled şeklinde oluşturulmuş olacaktır.

0

AJAX İLE DOLDURULAN BOOTSTRAP DROPDOWN (SELECT) KONTROLÜNÜN GÖRÜNMEMESİ

Salı, Eylül 19, 2017 / / , , , ,

Bootstrap select stili kullanan ve Ajax ile doldurulan  <Select> etiketinin elemanlarının görüntülenmeme sorunu.

Aşağıdaki şekilde doldurulan <Select> etiketinin elemanları kaynaktan kontrol edildiğinde dolmuş olmasına rağmen görüntülenmiyordu. Javascript içinde elemanlar doldurulduktan sonra ilgili <Select> etiketini refresh etmek gerekiyor.

     $("#dropSehir").change(function () {
        var dropSecim = $(this);
        var secilenId = dropSecim.val();
        var dropDolacak = $('#dropIlce');
        dropDolacak.empty();
        if (secilenId != "" || secilenId != "-1") {
            $.ajax({
                type: "POST",
                url: "/Ortak/IlceDoldur",
                datatype: "Json",
                data: { id: secilenId }
            }).done(function (sonuc) {               
                for (var i = 0; i < sonuc.length; i++) {
                    var elemanId = sonuc[i].ilceId;
                    var elemanAd = sonuc[i].IlceAdi;
                    var option = $("<option></option>")
                    option.text(elemanAd);
                    option.val(elemanId);
                    dropDolacak.append(option);
                }
                dropDolacak.selectpicker('refresh');
            });
        }
        else {
            dropDolacak.empty();
        }
    });

0

ASP.NET MVC AJAX PARTIAL VIEW YENİLEME REFRESH

Pazar, Ağustos 27, 2017 / / , , , , , ,

Asp.net Mvc'de bir PartialView sayfasını Jquery Ajax kullanarak yenileme. Partial View sayfamızda yenilenmesini istediğimiz bir tablomuz olsun. Bu tablo Jquery Datatable eklentisini kullansın. Gönderdiğimiz filtreye göre tablomuz yenilensin.

Jquery DataTable eklentisi listelenmiş veriler arasında kendisi filtreleme yapabiliyor fakat bu filrelemeyi yüklenmiş veriler üzerinde gerçekleştiriyor. Yani Pasif olanları göster dediğimde kendisine doldurulmuş olan tüm veriler arasından pasif kriterine uyanları listeliyor. Bu durum performans kaybına sebep olduğundan Ajax yenileme tekniğini kullanarak yapılan seçime göre tablonun yeni verilerle dolmasını sağlayacağız.



Partial View'ın çağrılacağı asıl sayfamız..

....
<div id="tabloBolum">
                @Html.Partial("_PartialDataTable")
            </div>
....


_PartialDataTable isimli Partial View saymaızdaki tablo yerleşimi ve ViewBag.TabloVeri ile verilerin gösterimi

....
<table class="m-datatable" id="dataTablo" width="100%">
    <thead>
        <tr>
            <th title="#" data-field="RecordID">
                <label class="m-checkbox m-checkbox--solid m-checkbox--brand cbSecim" style="margin-left:2px;">
                    <input type="checkbox" name="cbSecTumu" id="cbSecTumu">
                    <span></span>
                </label>
            </th>
            <th title="Field #1" data-field="Islem">İşlem</th>
            <th title="Field #2" data-field="Sayfa">Sayfa</th>
            <th title="Field #3" data-field="NodId">NodId</th>
            <th title="Field #4" data-field="SayfaTip">SayfaTip</th>
            <th title="Field #5" data-field="Durum">Durum</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in ViewBag.TabloVeri)
        {
            <tr>
                <td>
                    <label class="m-checkbox m-checkbox--solid m-checkbox--brand">
                        <input type="checkbox" name="cbSecim[]" id="cbSecim[]" value="@item.SayfaId" class="cbSecim @item.SayfaId">
                        <span></span>
                    </label>
                </td>
                <td ..........


_PartialDataTable isimli Partial View sayfamızdaki Ajax işlemini yapacak script bloğu..


<script type="text/javascript">
//seçim yapıldıkça çağrılacak fonksiyonumuz
    function TabloListele() {
        var secilenDurum = $("#m_form_status").val();
        var data = { seciliDurum: secilenDurum };
     
        $.ajax({
            url: '@Url.Action("TabloListe", "Sayfa")',
            type: "POST",
            data: JSON.stringify(data),
            contentType: 'application/json',
            success: function (result) {
                $("#tabloBolum").html(result);
                $("#m_form_status").val(secilenDurum);
            }
        });
    }
</script>



Sayfa Controller içindeki TabloListe isimli Action..

        [HttpPost]
        public PartialViewResult TabloListe(string seciliDurum)
        {
            object durum = 1;
            if (seciliDurum == "Pasif")
            {
                durum = 0;
            }
            else if (seciliDurum=="Tumu")
            {
                durum = null;
            }
            else
            {
                durum = 1;
            }
            var model = Islem.Sayfa.Listele(durum: durum);
            ViewBag.TabloVeri = model;
            return PartialView("_PartialDataTable", ViewBag.TabloVeri);
        }



Gerekli Jquery ve Datatable eklentisi scriptlerinizi ilave etmelisiniz..

0

ASP.NET MVC AJAX LOGIN ÜYE GİRİŞİ

Cumartesi, Ağustos 26, 2017 / / , , , ,

Login işlemini gerçekleştireceğimiz View'ın form bölümü

@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "__AjaxAntiForgeryForm" }))
                {
                    @Html.AntiForgeryToken()

                    <!--begin::Body-->
                    <div class="m-login__body">

                        <!--begin::Signin-->
                        <div class="m-login__signin">
                            <div class="m-login__title">
                                <h3>Giriş Yap</h3>
                            </div>

                            <div id="mesaj" class="alert alert-danger alert-dismissible fade show" role="alert" style="display:none;">
                                <button type="button" class="close" data-dismiss="alert" aria-label="Close"></button>
                                <span id="mesajMetin"></span>
                            </div>

                            <div class="form-group m-form__group">
                                <input class="form-control m-input" type="text" placeholder="E-posta" id="kullaniciAd" name="kullaniciAd" autocomplete="off" required>
                            </div>
                            <div class="form-group m-form__group">
                                <input class="form-control m-input m-login__form-input--last" type="password" placeholder="Şifre" id="sifre" name="sifre" required>
                            </div>

                            <!--end::Form-->
                            <!--begin::Action-->
                            <div class="m-login__action">
                                <a href="#" class="m-link">
                                    <span>Şifremi Unuttum</span>
                                </a>
                                <button id="btnGiris" class="btn btn-primary" onclick="return false;">Giriş</button>
                            </div>

                        </div>

                        <!--end::Signin-->
                    </div>
                    <!--end::Body-->

                }



AJAX Bölümü

<script type="text/javascript">

        $("#btnGiris").click(function () {

            var girisDurum = false;
            var girisHata = "";

            var form = $('#__AjaxAntiForgeryForm');
            var token = $('input[name="__RequestVerificationToken"]', form).val();
            var kullaniciAd = $("#kullaniciAd").val();
            var sifre = $("#sifre").val();

            if (kullaniciAd == "" || sifre == "") {

                $("#mesajMetin").text("Lütfen tüm alanları doldurunuz!");
                $("#mesaj").show();
                return;
            }

            $("#mesaj").hide();
            $("#btnGiris").addClass("m-loader m-loader--right m-loader--light");
            $("#btnGiris").attr("disabled", true);

            $.ajax({
                url: "/Login/GirisKontrol",
                type: 'POST',
                data: {
                    __RequestVerificationToken: token,
                    username: kullaniciAd,
                    password: sifre
                },
                success: function (sonuc) {
                    //alert(sonuc.Durum);

                    if (sonuc.Durum == "OK") {

                        girisDurum = true;

                    }
                    else {

                        girisHata = sonuc.Durum;

                    }
                },
                complete: function () {

                    if (girisDurum == true) {

                        //alert("başarılı")
                        window.location.href = "/Profil";

                    } else {

                        //alert(girisHata);

                        if (girisHata == "BULUNAMADI") {

                            $("#mesajMetin").text("Kullanıcı bulunamadı. Bilgilerinizi kontrol ediniz.");
                            $("#mesaj").show();
                            $("#btnGiris").removeClass("m-loader m-loader--right m-loader--light");
                            $("#btnGiris").attr("disabled", false);

                        }
                        else {

                            $("#mesajMetin").text(girisHata);
                            $("#mesaj").show();
                            $("#btnGiris").removeClass("m-loader m-loader--right m-loader--light");
                            $("#btnGiris").attr("disabled", false);

                        }

                    }

                    girisDurum = false;

                }
            });

            return false;

        });
    </script>

Controller Bölümü

[HttpPost]
        [ValidateAntiForgeryToken]
        public JsonResult GirisKontrol(string username, string password)
        {
            try
            {
                System.Threading.Thread.Sleep(100);

                if (ModelState.IsValid)
                {
                    var md5Sifre = MD5Sifrele(password);

                    var veri = Login.GirisYap(username, md5Sifre);

                    if (veri != null)
                    {

                        Session["KULLANICIID"] = veri.KullaniciId.ToString();
                        Session["KULLANICIAD"] = veri.KullaniciAd.ToString();
                        Session["KULLANICIEPOSTA"] = veri.Eposta.ToString();
                        Session["PROFILAD"] = veri.Ad.ToString();
                        Session["PROFILSOYAD"] = veri.Soyad.ToString();
                        Session["PROFIL_AD_SOYAD"] = Session["PROFILAD"] + " " + Session["PROFILSOYAD"];
                        Session["YONETIM_YETKI"] = "1";

                        string ilkHarfAd = ".";
                        string ilkHarfSoyad = ".";

                        if (Session["PROFILAD"].ToString() != String.Empty)
                        {
                            ilkHarfAd = Session["PROFILAD"].ToString().Substring(0, 1);
                        }
                        if (Session["PROFILSOYAD"].ToString() != String.Empty)
                        {
                            ilkHarfSoyad = Session["PROFILSOYAD"].ToString().Substring(0, 1);
                        }

                        string adSoyadIlkHarfler = ilkHarfAd.ToUpper() + ilkHarfSoyad.ToUpper();
                        Session["ADSOYAD_ILK_HARFLER"] = adSoyadIlkHarfler;

                        //ViewBag.Sonuc = "Giriş başarılı!";
                        return Json(new { Durum = "OK" }, JsonRequestBehavior.AllowGet);
                    }
                    else
                    {
                        return Json(new { Durum = "BULUNAMADI" }, JsonRequestBehavior.AllowGet);
                    }
                }

                return Json(new { Durum = "HATA" });
            }
            catch (Exception ex)
            {
                return Json(new { Durum = "HATA ~ " + ex.Message }, JsonRequestBehavior.AllowGet);
            }
        }

0

ASP.NET MVC FILTER KULLANIMI

Çarşamba, Ağustos 16, 2017 / / , , , ,

Filter kullanarak Mvc projelerinde kullanıcı ve session kontrolü yapmak

Projeye Filters adında bir klasör ekleyip, Auth.cs isimli bir class oluşturuyoruz.

Classımızı aşağıdaki şekilde değiştiriyoruz.

public class Auth : FilterAttribute, IAuthorizationFilter
    {
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            if (System.Web.HttpContext.Current.Session["KULLANICIID"] == null)
            {
                filterContext.Result = new RedirectResult("/Login");
            }
        }
    }


Controller içinde kullanıcı kontrolü yapmak istediğimiz Action'ın üzerine [Auth] şeklinde kontrolümüzü gerçekleştiriyoruz. İlgili Controller'ın tamamında bu kontrolü gerçekleştirmek için [Auth], classın üzerine taşınabilir.

Örneğin:

namespace TamerYigitMvc.Controllers
{
    [Auth]
    public class TestController : Controller
    {

Veya aşağıdaki şekilde her Action için ayrı ayrı kullanılabilir.

[Auth]
        public ActionResult Index()
        {
            ......
            return View();
        }

[Auth]
        public ActionResult Ekle()
        {
           ....
            return View();
        } 

SON YORUMLAR