BAĞLANTILARIM

Takip Edin:

0

ASP.NET MVC DATATABLE KULLANARAK VIEW TARAFINDA LİSTELEME

Cumartesi, Aralık 23, 2017 / / , , , ,

Controller tarafında üzerinde çeşitli işlemler yaptığımız DataTable tablomuzu View tarafına gönderdik ve listeleme yaptık.

Controller tarafı

public ActionResult Rapor()
        {
            DataTable dtRapor = RaporTablo(Convert.ToDateTime(Session["ILKTARIH"]), Convert.ToDateTime(Session["SONTARIH"]));
            return View(dtRapor);
        }


View tarafı

@model System.Data.DataTable
<table class="table">
                                <thead>
                                    <tr>
                                        <th>ŞEHİR</th>
                                        <th>İLÇE</th>
                                        <th>CARİ</th>
                                        <th>AÇIKLAMA</th>
                                        <th>TARİH</th>
                                        <th>TUTAR</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    @for (int i = 0; i < Model.Rows.Count; i++)
                                        {
                                            <tr>
                                                <td>@Model.Rows[i]["SehirAdi"]</td>
                                                <td>@Model.Rows[i]["IlceAdi"]</td>
                                                <td>@Model.Rows[i]["CariUnvan"]</td>
                                                <td>@Model.Rows[i]["Ad"]</td>
                                                <td>@Convert.ToDateTime(Model.Rows[i]["HareketTarih"]).ToString("dd.MM.yyyy")</td>
                                                <td>@Convert.ToDouble(Model.Rows[i]["Miktar"]).ToString("N2") @if(@Model.Rows[i]["ParaTip"].ToString()=="1") { @Html.Raw("TRY") } @if(@Model.Rows[i]["ParaTip"].ToString()=="2") { @Html.Raw("USD") } @if(@Model.Rows[i]["ParaTip"].ToString()=="3") { @Html.Raw("EURO") } </td>
                                            </tr>
                                        }
                                </tbody>
                            </table>

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();
        } 

0

SQL SERVER'DA JOB (ZAMANLANMIŞ GÖREV) OLUŞTURMA

Perşembe, Ağustos 03, 2017 / /



http://blog.tameryigit.com/2017/08/sql-stored-procedure-ve-cursor-kullanimi.html bağlantıda oluşturduğumuz Stored Procedure'ü, Sql Server'ın Job özelliğini kullanarak günde 1 kez otomatik çalıştırmak istedik.

Bunun için öncelikle Microsoft SQL Server Management Studio'da SQL Server Agent'ı aktif ettik.

Jobs bölümünden New Job diyerek Job tanımlama ekranını doldurduk.



Steps bölümünde yapılacak işleri, Schedules bölümünde ise bu işlerin hangi zamanlarda yapılacağını tanımladık.




Örnekte tanımladığımız Job, her gece saat 01:00'da EXEC TeklifOlustur komutunu yani prosedürümüzü çalıştırıyor.

0

SQL STORED PROCEDURE ve CURSOR KULLANIMI

Perşembe, Ağustos 03, 2017 / /



Aşağıdaki örnekte TeklifOlustur adında bir prosedür oluşturduk.

Prosedürün yapacağı iş, birkaç tablodan UNION ALL ile birleştirilerek alınmış sorgu sonucunu stored procedure içinde tanımlanmış @TABLO adında bir tabloya yazmak.

Daha sonra kursor adıyla tanımlanmış CURSOR vasıtasıyla bu tablo üzerinde satır satır dolaşarak SELECT, SUM gibi çeşitli işlemler yaptıktan sonra bulduğu bilgileri TEKLIF tablosuna eklemek.

USE [BOSFOR_WEB_YONETIM_FIDE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procedure [dbo].[TeklifOlustur]
AS

DECLARE @ILKTARIH NVARCHAR(100) = GETDATE() --güncel zaman
DECLARE @SONTARIH NVARCHAR(100) = DATEADD(yy,10,GETDATE()) --güncel zamana 10 yıl ekledik
 --procedure içinde kürsörde kullanmak üzere bir tablo tanımlıyoruz
DECLARE @TABLO TABLE
(
 FIRMA NVARCHAR(50),
 SIPARISNO NVARCHAR(50),
 EKIMNO NVARCHAR(50),
 FIDEADI NVARCHAR(250),
 VARYANT NVARCHAR(50),
 SEEDITEMREF NVARCHAR(50),
 TOHUMADI NVARCHAR(250),
 PLANLANANEKIMTARIHI NVARCHAR(50),
 TESLIMTARIHI NVARCHAR(50),
 SIPARISMIKTARI NVARCHAR(50),
 PLNMIKTAR INT,
 EKILENMIKTAR NVARCHAR(50),
 BEKLEYENMIKTAR NVARCHAR(50),
 TEKLIFMIKTARI NVARCHAR(50),
      KALANGUN NVARCHAR(250)
)
INSERT @TABLO
   
SELECT TMP2.*
FROM (
SELECT
TMP.*
,KALANGUN=(SELECT DATEDIFF(day, GETDATE(), PLANLANANEKIMTARIHI))
FROM (
SELECT * FROM FITAP.[dbo].[FF_220_TOHUMBILGI](@SONTARIH,@ILKTARIH)
UNION ALL
SELECT * FROM FITAP.[dbo].[FF_230_TOHUMBILGI](@SONTARIH,@ILKTARIH)
UNION ALL
SELECT * FROM FITAP.[dbo].[FF_240_TOHUMBILGI](@SONTARIH,@ILKTARIH)
UNION ALL
SELECT * FROM FITAP.[dbo].[FF_250_TOHUMBILGI](@SONTARIH,@ILKTARIH)
UNION ALL
SELECT * FROM FITAP.[dbo].[FF_260_TOHUMBILGI](@SONTARIH,@ILKTARIH)
UNION ALL
SELECT * FROM FITAP.[dbo].[FF_270_TOHUMBILGI](@SONTARIH,@ILKTARIH)
) AS TMP
) AS TMP2
WHERE TOHUMADI IS NOT NULL
AND KALANGUN<=5
ORDER BY PLANLANANEKIMTARIHI

SELECT * FROM @TABLO

--CURSOR BAŞLIYOR
DECLARE @TOHUMAD NVARCHAR(250)
DECLARE @PLANLANANMIKTAR INT

DECLARE kursor CURSOR FOR
--TABLOYU GRUPLANDIRARAK ALDIK
SELECT TOHUMADI FROM @TABLO GROUP BY TOHUMADI
OPEN kursor
FETCH NEXT FROM kursor
INTO @TOHUMAD
WHILE @@FETCH_STATUS = 0
BEGIN

  --Burada TOHUMADI'na göre filtreleme yap ve PLNMIKTAR alanlarındaki veriyi toplayıp @PLANLANANMIKTAR değişkenine at
  --TOHUM ADINA GÖRE BAK
  SELECT @PLANLANANMIKTAR=SUM(PLNMIKTAR) FROM @TABLO WHERE TOHUMADI=@TOHUMAD
 
 --KAYIT EKLE
 INSERT INTO TEKLIF (TohumAd,KayitTarihi,Miktar) VALUES (@TOHUMAD,(SELECT GETDATE()),@PLANLANANMIKTAR)

FETCH NEXT FROM kursor INTO @TOHUMAD
END
CLOSE kursor
DEALLOCATE kursor

Bu prosedür otomatik olarak belirli aralıklarla çalışsın istenirse Sql Server'da Job oluşturulabilir.
http://blog.tameryigit.com/2017/08/sql-serverda-job-zamanlanmis-gorev.html

0

C# İLE OFFICE365 ÜZERİNDEN MAIL GÖNDERMEK

Cumartesi, Temmuz 29, 2017 / / , ,


C# ile Office365 üzerinden mail gönderebilmek için öncelikle aşağıdaki bağlantıdan Microsoft Exchange Web Services Managed API'ı indirdik. Kurulumu yaptıktan sonra Visual Studio'dan projemizin Reference bölümünden gerekli .dll dosyalarını ekledik. Bulunduğu yol C:\Program Files\Microsoft\Exchange\Web Services\2.2\

İndirme bağlantısı : https://www.microsoft.com/en-us/download/details.aspx?id=42951


Aşağıdaki namespace gerekiyor.

using Microsoft.Exchange.WebServices.Data;


Mail gönderimini yapacak Exchange kodlarımız

    public static void ExchangeUzerinden(string mailBaslik, string mailIcerik, string aliciPosta)
    {
        EmailAddress alacakAdres = new EmailAddress(aliciPosta);
        string strsubject = mailBaslik;
        string strbody = mailIcerik;
        ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
        service.Credentials = new WebCredentials("test@bosforbilisim.com.tr", "123abcd");
        //bunu kullanmaktaki amaç service.URL bilgisini otomatik almak fakat beklettiği için aşağıdaki şekilde manuel olarak tanımladık.
        //service.AutodiscoverUrl("tamer@bosforbilisim.com.tr", RedirectionUrlValidationCallback);
        service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
        EmailMessage message = new EmailMessage(service);
        message.Subject = strsubject;
        message.Body = strbody;
        message.ToRecipients.Add(alacakAdres);
        message.Save();
        message.SendAndSaveCopy();
    }


    private static bool RedirectionUrlValidationCallback(string redirectionUrl)
    {
        bool result = false;
        Uri redirectionUri = new Uri(redirectionUrl);
        if (redirectionUri.Scheme == "https")
        {
            result = true;
        }
        return result;
    }


Gönder :

        protected void Button1_Click(object sender, EventArgs e)
        {
            try
            {
                MailGonder.ExchangeUzerinden("Başlık", "Mesaj içeriği", "tmryigit@gmail.com");
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }

0

MVC DROPDOWN MULTISELECT ÇOKLU SEÇİM KULLANIMI

Perşembe, Temmuz 20, 2017 / / , ,

Asp.Net MVC ile MultiSelect Çoklu Seçim DropDownList Kullanımı aşağıdaki şekilde yapılabilir.
Aşağıdaki örnekte kayıtlı kategorileri ViewBag.KayitliKategoriListe içinde tuttuk.

Daha sonra View'da kategorileri for döngüsü ile listelerken arasında kontrol yaptık. Eşitliği karşılayan kaydın option tag'ine selected ekledik.

View Tarafı

<select name="dropKategori[]" class="form-control multiSelect" multiple="multiple" required>
                                                @for (int i = 0; i < ViewBag.KategoriListe.Count; i++)
                                                {
                                                    <option value="@ViewBag.KategoriListe[i].KatId" @if (ViewBag.KayitliKategoriListe.Contains(ViewBag.KategoriListe[i].KatId)) {<text> selected</text>}>@ViewBag.KategoriListe[i].KatAd</option>
                                                }
                                            </select>


Controller Tarafı

///////kayıtlı kategoriler
            var kayitliKategori = Islem.CariKategori.Liste(cariId: id).Select(x => x.KatId).ToArray();
            var kayitliKategoriListe = new List<int>();
            for (int i = 0; i < kayitliKategori.Length; i++)
            {
                kayitliKategoriListe.Add(kayitliKategori[i].Value);
            }
            ViewBag.KayitliKategoriListe = kayitliKategoriListe;
            ///////

//kategori listesi
var modelKategori = Islem.Kategori.Listele();
ViewBag.KategoriListe = modelKategori.ToList();


0

ASP.NET MVC BİR CONTROLLER'DAN BAŞKA BİR CONTROLLER'A PARAMETRE GÖNDERME

Pazar, Temmuz 16, 2017 / / , , ,

Controller arasında parametre taşıma aşağıdaki şekillerde yapılabiliyor.

QueryString ile Adres Çubuğundan

Customer class kodları

public class Customer
{
    public int CustomerID { get; set; }
    public string CustomerName { get; set; }
    public string Country { get; set; }
}

Aşağıdaki kod, Home1 isimli Controller'a ait Index Methodu.

public ActionResult Index()
{
    Customer data = new Customer()
    {
        CustomerID = 1,
        CustomerName = "Abcd",
        Country = "USA"
    };
    string url=string.Format("/home2/index?customerid={0}
               &customername={1}&country={2}",
               data.CustomerID,data.CustomerName,data.Country);
    return Redirect(url);
}


Aşağıdkai kod ise Home2 isimli Controller'ın Index methodunda gelen parametleri nasıl alacağınız gösteriliyor.

public ActionResult Index()
{
    Customer data = new Customer();
    data.CustomerID = int.Parse(Request.QueryString["CustomerID"]);
    data.CustomerName = Request.QueryString["CustomerName"];
    data.Country = Request.QueryString["Country"];
    return View(data);
}



TempData yöntemini kullanarak parametre gönderme

Home1 içinde TempData["mydata"] 'nın dolduruluşu..

public ActionResult Index()
{
    Customer data = new Customer()
    {
        CustomerID = 1,
        CustomerName = "Abcd",
        Country = "USA"
    };
    TempData["mydata"] = data;
    return RedirectToAction("Index", "Home2");
}

Home2 içinde TempData["mydata"] 'nın okunuşu..

public ActionResult Index()
{
    Customer data = TempData["mydata"] as Customer;
    return View(data);
}


Diğer yöntemler ve kullanım şekilleri için http://www.binaryintellect.net/articles/8e64d05b-ab2e-45f6-b7f5-b8a90168915e.aspx

1

Asp.net ile kolay ProgressBar yapımı

Perşembe, Haziran 29, 2017 / / , , ,



Bir işlemin yüzde kaçının tamamlandığını gösteren dinamik bir progressbar yapıyoruz. Bu işlem Jquery kullanmadan, sayfada sadece 1 adet UpdatePanel ve 1 Adet Timer kontrolü yardımıyla aşağıdaki şekilde yapılabilir.

Butona basıldıktan sonra Timer devreye girsin istedik. Bu yüzden tasarım tarafında Timer kontrolünün Enable özelliğini "false" olarak belirledik. Saniyede bir kez çalışması için Interval özelliğini "1000" olarak ayarladık.

Tasarım tarafı

<asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Timer ID="Timer1" runat="server" Interval="1000" OnTick="Timer1_Tick" Enabled="false"></asp:Timer>
                    <div style="width:100%; height:28px; border:1px solid #aaa; padding:1px;">
                    <asp:Literal ID="ltrBar" runat="server"></asp:Literal>
                    </div>
                        <br />
                    <asp:Literal ID="ltrYuzde" runat="server"></asp:Literal>
                    <br />
                    <br />
                    <br />
                    <div style="text-align: center;">
                        <asp:LinkButton ID="linkGonder" runat="server" CssClass="buton yesil" Style="padding: 15px 50px; font-size: 17px;" OnClick="linkGonder_Click"><i class="fa fa-paper-plane"></i> Gönder</asp:LinkButton>
                    </div>
                </ContentTemplate>
            </asp:UpdatePanel>


Kod tarafı


        static int listeElemanSiraNo;
        static List<string> listeMailAdres = new List<string>(); //mail adreslerin olduğu liste
   protected void linkGonder_Click(object sender, EventArgs e)
        {
            listeElemanSiraNo = 0;
            linkGonder.Enabled = false;
            Timer1.Enabled = true;
        }


        protected void MailIslem(int mailAdresNo)
        {
            try
            {
                if (listeMailAdres.Count > 0)
                {
                    string gonderilecekEpostaAdresi = listeMailAdres[mailAdresNo];
                    ////mailgönderimini burada yap
                    listeElemanSiraNo = mailAdresNo + 1;
                    double toplamDeger = listeMailAdres.Count;
                    double bulunanDeger = listeElemanSiraNo;
                    int tamamlananYuzde = (int)Math.Round((double)(100 * bulunanDeger) / toplamDeger);
                    ltrBar.Text = "<div style=\"background-color:#ccc; height:28px; width:" + tamamlananYuzde + "%;\"></div>";
                    ltrYuzde.Text = "%" + tamamlananYuzde.ToString();
                }
            }
            catch (Exception ex)
            {
                lblIslemSonuc.Text = ex.Message;
                lblIslemSonuc.CssClass = "islemHatali";
                lblIslemSonuc.Visible = true;
            }
        }
        protected void Timer1_Tick(object sender, EventArgs e)
        {
            //saniyede bir kez çalış, sıradaki mail adresine mail gönder.
            if (listeElemanSiraNo < listeMailAdres.Count)
            {
                MailIslem(listeElemanSiraNo);
            }
            else
            {
                Timer1.Enabled = false;
                linkGonder.Enabled = true;
            }
        }




0

ASP.NET MVC ENTITY FRAMEWORK VERİLERİ ÇEKERKEN ÇEKİLECEK TABLO ALANLARINI DİNAMİK OLARAK BELİRLEME

Pazartesi, Mart 20, 2017 / / , , ,

Entity Framework ile verileri Class tipinde çekerken, çekilecek alanların adlarını manuel olarak değil, dinamik olarak yazarak çekmek

Aşağıdaki örnekte veriFormData isimli listede dönerek veriPersonel isimli class içinden hangi alanları kullanacağımızı dinamik olarak gönderdik ve aldık.

                        for (int i = 0; i < veriFormData.Count; i++)
                        {
                            var formDataAd = veriFormData[i].DataAd;
                           
                            var cekilecekData = veriPersonel.GetType().GetProperties().Single(p => p.Name == formDataAd);
                            var yazilacakData = cekilecekData.GetValue(veriPersonel);
                        }

0

SQL'de VARBINARY tipinde tutulan ziplenmiş dosyayı indirme

Cuma, Şubat 24, 2017 / / , , ,

protected void DosyaIslem(string islemYapilacakDosyaId)
        {
            try
            {
                VeriMsSQL.Islem islem = new VeriMsSQL.Islem();
                DataTable dt = islem.DosyaBilgi(islemYapilacakDosyaId);
                if (dt.Rows.Count > 0)
                {
                    DataRow dr = dt.Rows[0];
                    string dosya = dr["Dosya"].ToString();
                    string dosyaAd = dr["DosyaAd"].ToString();
                    byte[] bytes = (byte[])dr["Dosya"];
                    Response.Clear();
                    Response.AddHeader("content-disposition", "attachment;filename=" + dosyaAd + ".zip");
                    Response.ContentType = "application/zip";
                    Response.BinaryWrite(bytes);
                    Response.End();
                }
                dt.Dispose();
            }
            catch (Exception ex)
            {
                lblIslemSonuc.Text = ex.Message;
                lblIslemSonuc.CssClass = "islemHatali";
                lblIslemSonuc.Visible = true;
            }
        }

C#'ta dosyayı zip'e çevirme ve ziplenmiş dosyayı varbinary tipinde sql de tutma 

0

C#'ta dosyayı zip'e çevirme ve ziplenmiş dosyayı VARBINARY tipinde sql de tutma

Cuma, Şubat 24, 2017 / / , , ,

C# ile bir dosyayı .zip formatına çevirmek için çeşitli dll dosyayları bulunmakta. Buradaki örnekte Ionic DotNetZip kullanıldı. https://dotnetzip.codeplex.com/

   protected void DosyaYukleSql()
        {
            try
            {
                Guid guId = Guid.NewGuid();
                string dosyaAd = System.IO.Path.GetFileName(fileDosya.FileName);
                string dosyaUzanti = System.IO.Path.GetExtension(dosyaAd);
                dosya = guId + dosyaUzanti;  //dosya adını Guid ile belirledik              
                    using (ZipFile zip = new ZipFile())
                    {
                        zip.AddEntry(dosya, fileDosya.PostedFile.InputStream);
                        zip.Save(Server.MapPath("/upload/zip/") + guId + ".zip");
                        //zipi binary yap
                        byte[] byteZip = File.ReadAllBytes(Server.MapPath("/upload/zip/") + guId + ".zip");
//veritabanına ekle
                        VeriMsSQL.Islem islem = new VeriMsSQL.Islem();
                        islem.DosyaEkle(guId.ToString(), byteZip, kayitId: dosyaKayitId);
                    }
                    File.Delete(Server.MapPath("/upload/zip/") + guId + ".zip"); //klasördeki zipli dosyayı sil
            }
            catch (Exception ex)
            {
                lblIslemSonuc.Text = ex.Message;
                lblIslemSonuc.CssClass = "islemHatali";
                lblIslemSonuc.Visible = true;
            }
        }



SQL'de varbinary tipinde tutulan ziplenmiş dosyayı indirme

0

ASP.NET MVC MODAL İLE PARTIALVIEW KULLANIMI

Pazar, Ocak 29, 2017 / / , , , ,

Aşağıdaki örnekte Duzenle.cshtml isimli View içinde bulunan link tıklandığında yine Duzenle.cshtml içindeki modale _PartialOrtakDuzenle isimli PartialView yüklenecek.

Duzenle.cshtml içindeki modali çağıran linkimiz

<a href="#" class="btn btn-brand" data-toggle="modal" data-target="#m_modal" onclick="OrtakDuzenle(@item.OrtakId)">@item.Ad @item.Soyad <i class="la la-gear"></i></a>

Link tıklandığında çağrılan OrtakDuzenle isimli JavaScript Fonksiyonumuz

<script type="text/javascript">
    function OrtakDuzenle(ortakId) {
       
        var url = '@Url.Action("DuzenlePartial", "Ortak")';
        url += '/?Id=' + ortakId;
        $(".modal-body").load(url);
    }
</script>


Ortak isimli Controller içinde bulunan DuzenlePartial isimli Action, bu metod içinde işlemleri yaptıktan sonra Shared klasörü içindeki _PartialOrtakDuzenle isimli Partial View'ı dönecek. id parametresini de gönderdik.

public ActionResult DuzenlePartial(int id)
        {
            OrtakBilgi(id);
            return PartialView("_PartialOrtakDuzenle", id);
        }


Duzenle.cshtml kodları arasındaki modal

<!--begin::Modal-->
<div class="modal fade" id="m_modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="exampleModalLabel">Ortak Düzenle</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
<!--javascript fonksiyonumuz, controllerdaki işlemlerini yaptıktan sonra bu class arasına partial viewı yükleyecek..-->
            </div>           
        </div>
    </div>
</div>
<!--end::Modal-->



Jquery ve Bootstrap kullanılmıştır..

SON YORUMLAR