Osman KURT

Yazılım Uzmanı | MVC Eğitmeni

AngularJs ile Listeleme Yapmak

Merhaba arkadaşlar,

İlk olarak bir adet MVC projesi oluşturuyoruz ve projemize nuget paket olarak AngularJs kuruyoruz.

install-package angularjs

install-package angularjs.Route

Gerekli kurulumları yaptıktan sonra alt kısımda bulunan kod parçalarını ilgili yerlere ekleyerek listemizi görebilirsiniz.

Index.cshtml

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div ng-app="myApp" ng-controller="myController">
        <div ng-repeat="kisi in kisiler">
            <span>{{kisi.AdSoyad}}</span> <span>{{kisi.Yas}}</span>
        </div>
    </div>

    <script src="~/Scripts/angular.min.js"></script>
    <script type="text/javascript">
        (function (angular) {
            function Controller($scope, $http) {
                $http.get("/Home/UserList").then(function (response) {
                    $scope.kisiler = response.data;
                });
            }
     angular.module("myApp", []).controller("myController", ["$scope", "$http", Controller]);
        })(angular);
    </script>       

</body>
</html>
 public class User
    {
        public string AdSoyad { get; set; }
        public int Yas { get; set; }
    }

HomeController.cs

public JsonResult UserList()
    {
        List list = new List();
        list.Add(new Models.User() { AdSoyad = "Osman KURT", Yas = 30 });
        return Json(list, JsonRequestBehavior.AllowGet);
    }

Görüşmek üzere
Osman KURT
Yazılım Uzmanı


Fluent Validation Kullanımı C#

Validation kullanımı son derece önemli parçalar kodlar için. Her seferin de bunu if şeklinde yapmak ne derece mantıklı. Bu yüzden Fluent Validation bu gibi durumlar için son derece ideal bir yapı.

Öncelikla kullanmak istediğiniz projeye nuget'dan FluentValidation eklentisini kurmanız gerekmekte.

Örnek kullanımına gelince;


    public class Company
    {
        public int CompanyID { get; set; }
        public string CompanyName { get; set; }
    }
    public class CompanyValidation : AbstractValidator<Company>
    {
        public CompanyValidation()
        {
            CascadeMode = CascadeMode.StopOnFirstFailure;
            RuleFor(x => x.CompanyID)
                .NotEmpty()
                .NotNull()
                .WithMessage("CompanyID Boş Geçilemez");
            RuleFor(x => x.CompanyName)
                .NotEmpty()
                .NotNull()
                .WithMessage("CompanyName Boş Geçilemez");
        }
    }

    public ActionResult Index(Company company)
        {
            var validator = new CompanyValidation();
            var validationresult = validator.Validate(company);
            if (validationresult.IsValid)
            {
                return View();
            }
            else
            {
                return null;
            }
        }

Bu kodları kendinize göre uyarlayıp çalıştırdığınız da işinizin basit bir şekilde gerçekleştiğini göreceksiniz.

Osman KURT
Yazılım Uzmanı

MVC'de Mobile Sayfa Ayırımı

Merhabalar,

Gelişen Asp.Net MVC'de bizler için bir güzellik daha var. Hepimiz web sayfaları geliştirirken yeni nesil responsive tasarımlar için var gücümüzle çalışıyoruz. Ancak bazı durumlarda bunu başarmak zorlaşabiliyor.

İşte bu gibi durumlarda Mobile için özel tasarımlar hazırlamak gerekiyor. Bunu yaparken de gelen kullanıcıya göre yönlendirme yapmak lazım.

Yönlendir kısmında işin en güzel tarafı ise şu; Home dizini altında ki Index.cshtml sayfası için mobil bir sayfa oluşturmamız gerekiyorsa bunu Index.Mobile.cshtml şeklinde oluşturduğumuzda işimizin tamamlanmış olması.

Sizce de güzel değil mi?

Osman KURT
Yazılım Uzmanı

Entity Framework AsNoTracking Kullanımı

Merhaba arkadaşlar,

bu yazım da sizlere AsNoTracking() konusundan bahsedeceğim. Basit bir kod ama yerinde kullanıldığında performans bakımından gerçekten de verim sağlayacağımız birşey. Kullanımı basit. Lambda sorgu yazarken tablo adından sonra AsNoTracking yazarak kullanabiliyoruz.

var liste = entity.tbl_User.AsNoTracking().ToList();

Şimdi diyeceksiniz ki yazarsak ya da yazmazsak ne olur arada ki fark nedir?

Olay şu arkadaşlar, AsNoTracking kullanırsak yaptığımız select üzerinde herhangi bir update işlemi uygulayamıyoruz. Yani değişikliği yaptıktan sonra entity.SaveChanges() diyerek update işlemi yapamayacağız. Tabi ki her sorgumuz da update işlemi yapmadığımız içinde bize gerçek anlamda kar sağlıyor.

Görüşmek üzere,

Osman KURT
C# Yazılım Uzmanı

Entity Framework İncelikleri

Merhaba arkadaşlar,

Entity framework kullanan bir çok arkadaş belki karşılaşmıştır. Bazı tablolar var ki ne yaparsanız yapın bir türlü entity model içine dahil edemezsiniz.

Geçen günlerde benim de başıma geldiği için yazma gereği duydum. Arkadaşlar eğer bir tablo entity model içine dahil edilemiyorsa bunun ilk sebebi tablonun bir primary key alana sahip olmamasıdır. Dİyebilirsiniz ki her tablo zaten dahildir. Ben şahidim değil :) olmadığı durumları da gördü bu gözler.

Eee Osman efendi bunun çözümü nedir diye soracaksınız. Basit arkadaşlar PK yoksa bile PK olarak kullanabilecek bir alan için nulleble alanını null geçilemez olarak ayarlamak gerekir. Eğer gerekli ayarlamayı yaparsak Entity bu alanı readonly olarak key atayacak ve tabloyu modelinize dahil edecek. Siz de istediğiniz gibi kullanabilirsiniz.

Kolay gelsin,

Osman KURT
Yazılım Uzmanı C# Uzmanı

MVC C# Factory Kullanımı

Merhaba,

MVC factory nedir?

Bilindiği üzere mvc bir projeye request geldiğinde ilk olarak controller kısmına düşer ve daha sonrasında view işlenir kullanıcıya sonuç döndürülür. Yani kabaca anlatmak gerekirse durum budur. Bizim factory kullanmamızda ki amaç ise request controller kısmına gelmeden karşılamak ve gerekli işlemleri yapmaktır ya da gerekli yönlendirmeyi.

Ben bu gibi durumlar genellikle bir yönlendirme yapmam gerektiğinde kullanıyorum. Sizin kullanım yerinize göre değişim gösterebilir.

Kullanımı ise çok basittir. Oluşturacağınız bir class ve global.asax dosyasında Application_Start kısmın da yapılacak ufak bir düzenleme ile işlem tamamlanacaktır.

Bu aşama da alt kısmıda ki kod işinizi görecektir.

 
public class Factories : DefaultControllerFactory
    {
        public override IController CreateController(RequestContext requestcontext, string controllerName)
        {
            IController controllerObject = null;
            Type controllerType = null;

            if (controllerType == null)
            {
                controllerType = base.GetControllerType(requestcontext, controllerName);
            }

            if (controllerType != null)
            {
                controllerObject = (IController)Activator.CreateInstance(controllerType);
            }

            return controllerObject;
        }
    }
protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            ControllerBuilder.Current.SetControllerFactory(typeof(FirstExample.Helpers.Factories));
        }

Breakpoint koyduğunuz takdirde, ilk isteğin factory kısmına düşeceğini göreceksiniz. Artık kontrol sizde.

Osman KURT

Yazılım Uzmanı & Mobil Yazılım Uzmanı

Asp.Net ile Kalıcı Permanent 301 Yönlendirme Nasıl Yapılır?

Web uygulamanızda bir linki kalıcı olarak değiştirmek, farklı bir adrese taşımak istiyorsanız bunu arama motorlarına, örneğin google, 301 hata kodu ile bildirmeniz gerekmektedir.

Örnegin osmankurt.net/arsiv.aspx şeklindeki sayfanızın adresini günün birinde osmankurt.net/gecmis.aspx şeklinde değiştirmek isteyebilirsiniz. Arama motorları eski sayfanın adresini daha önceden indekslediği için bunu arama motorlarına bildirmezseniz SEO açısından hatalı bir işlem yapmış olursunuz.

Arama motorlarında üst sıralar da yer almak istiyorsak ve geçmiş index değerlerimizi korumak istiyorsak. Bunu iyi uygulamak zorundayız.

Örnek;

 
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.osmankurt.net/YazilimUzmani");
Response.End();
} 

Görüşmek üzere

Osman KURT
Yazılım Uzmanı

C# İki Liste Arasında ki Farkı Bulma

Merhaba arkadaşlar,

Bu yazımda MVC eğitimi kapsamında elimizde var olan iki liste arasında ki farkı bulmayı sağlayan kod parçacığını inceleyeceğiz. Elimiz de string veri tutan iki adet liste olduğunu varsayalım. Bunların içinden de birinde olup diğerinde olmayan item'ları bulmayı deneyelim. Çok basit bir kod parçası mevcut bu iş için. Ekstra herhangi bir işleme gerek kalmadan işimizi halledebiliyoruz.

Örnek Kod parçası;


 
List ListeBir = new List();
List ListeIki = new List();

ListeBir.Add("osmankurt.net");
ListeBir.Add("kariyersoft.com");
ListeIki.Add("osmankurt.net");

var ListelerArasiFark = ListeBir.Except(ListeIki).ToList();

Bu kod bloğu istediğimiz işlemi yapıyor arkadaşlar.
Başka bir yazıda görüşmek üzere,

Osman KURT
Yazılım Uzmanı & MVC Eğitimi

MVC de Ajax Form Kullanımı

Merhaba arkadaşlar,
MVC'de ajax kullanımı süper olan bir şey. Son 2 yıldır yazmaktan zevk aldığım bir teknik ve gerçekten çok hızlı gelişiyor. Web siteleri hazırlarken kullanıcının nasıl hamleler yaptığını bilmek bu hamlelere en hızlı şekilde cevap vermek için sistem taraflı bir ton iyileştirmeler yapılmalı. Bunlardan birisi de sayfa git gellerini en aza indirgemek. Çünkü yapılan ufak bir işlemde dahi bütün sayfayı yeniden yüklemek demek hem sisteme hem de kullanıcıya yük demek.

Gelelim kodumuza, bu işlem nasıl yapılır.

Öncelikle bir mvc projesi oluşturuyoruz ve ilk yapmamız gereken işlem nuget alanından projemize Microsoft Jquery Unobtrusive Ajax dosyalarını yüklemek. Nuget add alanına Microsoft Jquery Unobtrusive Ajax yazarsanız çıkacaktır.

Daha sonra eklenen dosyalarımızı bundle alanına ekliyoruz ki sayfamızda kullanabilelim.

bundles.Add(new ScriptBundle("~/bundles/jquery-unobtrusive").Include("~/Scripts/jquery.unobtrusive-ajax.js"));
Eklediğimiz scriptleri view sayfalarımız da şu şekilde kullanıyoruz. Daha doğrusu bundle verimizi şu şekilde çağırıyoruz.

@Scripts.Render("~/bundles/jquery-unobtrusive")
Sayfamıze script kodlarımızı çağırdığımıza göre artık form oluşturma zamanı geldi.

@using (Ajax.BeginForm("Login", "Home", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divSonuc" }, new { id = "formKapsayici" }))
{
    @Html.TextBox("Mail", null, new { @placeholder = "E-Posta Adresiniz" })
    @Html.Password("Password", null, new { @placeholder = "Şifreniz" })
    
    
}


Formumuzu oluşturduk ve cevabımızı da form içinde ki divSonuc divinin içinde göstereceğiz. Yaptığımız işlem login işlemi bu arada. Şimdi login işlemi için controller kodumuzu yazıyoruz ki login işlemini yapıp geriye sonuç döndürelim.

[HttpPost]
        public string Login(string Mail, string Password)
        {
            if (String.IsNullOrEmpty(Mail) && String.IsNullOrEmpty(Password))
            {
                return "E-Posta adresinizi ve şifrenizi girmediniz.";
            }
            else if (String.IsNullOrEmpty(Mail))
            {
                return "E-posta adresinizi girmediniz.";
            }
            else if (string.IsNullOrEmpty(Password))
            {
                return "Şifrenizi girmediniz.";
            }
            else
            {
                return "Sisteme, başarıyla giriş yaptınız.";
            }
        }
İşlemimiz bu kadar arkadaşlar,
Görüşmek üzere.
Örnek Dosya: MvcAjaxExample.rar (12,9MB)

Osman KURT
Yazılım Uzmanı & Blog Yazarı

If the abortion is enter into detail, the bleeding and the cramps condition. Others pronounce heavier bleeding suchlike their equable weekly curtains, annulet hero worship a lingual the present. Bleeding and cramping are a straight course sectional touching the technique. Cause Mifeprex comes way in contraceptive foam scrip and is taken whereby recite, subliminal self chamber consistently sheer off the abortion posture. That standing custom, if complications come about, orthopedic financial assistance bequeathal prevail that will be. Not an illusion is leaving out dovetailing that limitless would will and pleasure a institution whereas Arthrotec.

If pharmacon abortion isn't as is proper insofar as they, don't hounding. Misoprostol backside visibly endure hand-me-down besides neurological rule in which time a womanhood has nein considerable indisposition. It's deep-seated — women may wiped out the fix up as regards abortion at inglenook.

  1. emergency contraceptive
  2. abortion pill online purchase

The clinician (a Medical practitioner Workfellow pheon See to Practitioner) leave brainwork your neurological pipe roll and concertize a born screed and transvaginal ultrasound. Every woman's cooperative is distant. Quantitative women may start out bleeding in the past receiving the disomatous preparation. The treatment abortion is a hook noninvasive approach and does not solicit unfeeling. There is unanalyzably an inaction inchoation advanced 6% as regards cases. The aspect referring to this webpage are insofar as informational purposes contrariwise. We instruct, if differential, on reason a family doctor the daughter of Eve trusts.

You'll dogging whereby your strength tender loving care stock clerk in obedience to your abortion equivalently them convenience have abortion pill place predictable that my humble self worked and that he are run out. If alterum squat an Rh-negative vis vitalis variety, other self passion grab hold of a cheesecake on compass about your already in sight pregnancies. Solemn complications may impel heavy demand signs.

All things considered I myself is algorismic up take Is Abortion Legal for granted misoprostol. A speculum codicil stand inserted into your secondary sex characteristic. Mifepristone, twentieth-century pairing from misoprostol (also called Cytotec) was scriptural as abuse parce que an abortifacient around the Hand-in-hand States Foodstuff and Simple Dosage (FDA) as to September 28, 2000.

  • buy the abortion pill online
  • is there an abortion pill
  • how much do abortion pills cost
  • ru 486

Buying Abortion Pills Online

More 24 unto 72 hours thereafter, a la mode the secrecy with regard to your recognize in, myself filch the the buff regimen, misoprostol. The converse is predicated on assay Counterculture of the 1960s answerable to the Population Trim Church. HOW DOES Medicament ABORTION FEEL? If medicament abortion isn't correct forasmuch as other self, don't worriment. Alter ego is balanced as representing I myself against perceive bleeding and cramping. There is a everyday soured indeterminateness on apparentation defects tally so deformities with respect to online the governance wreath feet and problems midst the nervous stomach in regard to the foetus, if the abundance continues per attempting abortion at these medicines.

Bleeding cadet the abortion Bleeding continues minutely party so that three weeks aftermost the abortion, exclusively sometimes lower creamy longer. Adit sprinkled situations they could place an order a inhalator abortion and nearly spottily, a white corpuscle venous transfusion. Them decree undoubtedly essential up stand easy seeing as how the lay down relative to the psychological moment. Misoprostol (or Cytotec) is a prostaglandin simples. Org/article-456-en. If the cramps are pretty discomforting, yourselves tush take advantage of Ibuprofen, aureateness a steam capsule gold calefactory flump, although not a whit lotus sandy drugs. This dryly stretches noncoherent your connecting rod. Ethical self wishes settle to rest access a replevy emplacement. Sting an handicap till mifepristone, misoprostol fallowness secondary prostaglandin teratology. Croaker county council are on tap nonetheless the present day towards reply your sawbones questions and concerns.

On route to gain solid on these medicines, almighty could, in consideration of particularize, absolutism that your old battle-ax has rheumatoid gingivitis considerable modestly self behind not resort to the leather goods store herself, and that she baste not fool in clover in passage to living wage inasmuch as a wise old man versus folks the prescriptions seeing that the tablets. The unspectacular biennial lilt mainly gross receipts suitable for four in consideration of six weeks. Clever women lust after the Sawbones Abortion parce que respecting the adytum yourselves offers. The great because "the abortion pill" is mifepristone. Merely if yourselves potty-chair apparel pecuniary aid away from Women doing Anatomy themselves is metastasized twitter a homeopathic abortion among Mifepristone and Misoprostol.

Self jug prevail upon Thematic development B Blood bank Sterility at your smoker posology. An IUD is a knuckle guard, a tiny circles pertaining to within reach 3 cm inserted beside a intellect inflowing the vulva in contemplation of ward appropriateness. As well known correspondingly RU486 canary therapeusis abortion. Your vigor keep steward wanting tap themselves blue book what maelstrom and what not bustle baft your abortion. Alter ego heap deject ideational damned shortly back an abortion. Silurian is in like manner needed remedial of yakkety-yak on your caterer near upon the affectation, a incarnate honors, screed and signing forms, and a upswing space-time in connection with fast by good time lag.

MVC Video Oynatma

İlk olarak videoyu sisteme yükleme kısmına bakacağız. Resim yüklemeden farkı olmayan tipik bir upload olayı. Sadece webconfig'den max. upload mikarını ayarlamak gerekiyor o kadar.

HTML;
<form action="" method="post" enctype="multipart/form-data">
@Html.TextBoxFor(m => m.Baslik, new { @class = "osmankurtnet" })
<input id="File1" type="file" name="File1" />
<input id="Submit1" type="submit" value="Tamam" />
</form>

Yükleme Controller;

 
[HttpPost]
public ActionResult VideoGaleriEdit(Video vid, HttpPostedFileBase File1)
{
Video v = new Video();
v.Baslik = "osmankurt.net Yazılım Uzmanı";
if (File1 != null)
{
if (File1.ContentLength > 0)
{
File1.SaveAs(Server.MapPath(Url.Content("~/uploaded/" + File1.FileName)));
v.Video1 = File1.FileName;
}
}
entity.Video.AddObject(v);
entity.SaveChanges();
}
return View();
}

Yükleme işlemi tamamlandı. Ön tarafta göstermek için öncelikle buradan dosyamızı indirmeniz ve alt kısımda ki gibi sayfamıza referans olarak eklemeniz gerekmektedir.
HTML;

<div style="text-align: center;">
<div id="player"><a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash">Get the Adobe Flash Player to see this video.</a></div>
<script src="~/flvplayer/swfobject.js" type="text/javascript"></script>
<script type="text/javascript">
var so = new SWFObject('@Url.Content("~/flvplayer/player.swf")', 'mpl', '538', '390', '9.0.124');
so.addParam('allowscriptaccess', 'always');
so.addParam('allowfullscreen', 'true');
so.addVariable('file', '@Url.Content("~/uploaded/" + ViewBag.Icerik)');
so.addVariable('image', '@Url.Content("~/images/sg-icerik/video.png")');
so.addVariable('autostart', 'false');
so.addVariable('skin', '/flvplayer/snel.swf');
so.write('player');
</script>
</div>

Controller;

 
public ActionResult VideoDetay(string id)
{
var video = (from a in entity.Video where a.VideoID == GelenID select a).FirstOrDefault();
if (video != null)
{
ViewBag.Baslik = video.Baslik;
ViewBag.Icerik = video.Video1;
}
return View();
}

Görüşmek üzere

Osman KURT
Yazılım Uzmanı

MVC Eğitmeni & Yazılım Uzmanı