Osman KURT

Kendime Not

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ı

MVC'de BundleConfig Kullanımı Ve Performans Artışı

MVC projelerimizin default oluşumunda gelen bir özellik ve Microsoft gerçekten bu özelliği kullanmamızı istiyor.
Kullanımı basit, sayfa içerisinde o kadar çok css ve script tanımlıyoruz ki bazen biz bile ne nerden geliyor karıştırıyoruz. İşte bundle tam da bunu engellemek için yapışmış birşey.

Karışıklığı önlediği gibi eklediğimiz css ve js dosyalarını da optimize ederek, yüklemeden yani performansdan tasarruf sağlıyor ve bu sayede arama motorlarının bizi üst sıralara taşımasına yardımcı oluyor.

Gelelim kullanımına;
MVC projemizde ki App_start kalsöründe bulunan BundleConfig.cs dosyamıza alt örnekte olduğu gibi css ve scriptlerimizi ekliyoruz. İstediğimiz gibi ekleyebiliriz. Ezme durumlarından dolayı parça parça olarak ta ekleyebilirsiniz.


            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                        "~/Scripts/modernizr-*"));

            bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));

            bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
                        "~/Content/themes/base/jquery.ui.core.css",
                        "~/Content/themes/base/jquery.ui.resizable.css",
                        "~/Content/themes/base/jquery.ui.selectable.css",
                        "~/Content/themes/base/jquery.ui.accordion.css",
                        "~/Content/themes/base/jquery.ui.autocomplete.css",
                        "~/Content/themes/base/jquery.ui.button.css",
                        "~/Content/themes/base/jquery.ui.dialog.css",
                        "~/Content/themes/base/jquery.ui.slider.css",
                        "~/Content/themes/base/jquery.ui.tabs.css",
                        "~/Content/themes/base/jquery.ui.datepicker.css",
                        "~/Content/themes/base/jquery.ui.progressbar.css",
                        "~/Content/themes/base/jquery.ui.theme.css"));
Not düşmek gerekir se * işaretleri siz sürüm notu bildirmeden va olan sürümün numarasını almaya yarıyor.
Ön yüzde çağırmak gerekirse;

    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")

Kullanım gördüğünüz gibi bu kadar basit. Üst kısımda ki kodu sayfamızın neresinde css ve js dosyalarımızın çıkmasını istiyorsak oaraya kaymamız gerekiyor.

Yazımın başında da dedim ya optimize diye bir durum da var. İşte onun içinde BundleConfig.cs dosyamızın içine en üst kısımda ki paylaştığım kodun altına

   BundleTable.EnableOptimizations = true;
Eklememiz gerekiyor.

Örnek Dosya İçin

Görümek üzere,

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

C# .Net de İpucu

Başlıktan da anlayacağınız üzere bir ipucu ile karşınızdayım.
Daha önceden method hazırlarken parametrelerde ref diye bir tanımlama kullandınız mı?

Kısaca açıklamak gerekirse, çalışacak method'dan önce bir değişken tanımladınız ve tanımladığınız değişkeninizin method çalıştıktan sonra dinamik olarak değerinin update edilmesini ve bu değişimin de method içinde işlendikten sonra gerçekleşmesini istiyorsunuz. Methodunuz da return değeri olarak bu parametre ile alakalı herhangi birşey döndürmüyor. O zaman ref diye bir tanımlamamız var. Alt kısımda ki kod örneği tam da bunu açıklıyor.

İnanın bana gerektiği yerde kullanınca siz de ne kadar harika olduğunu göreceksiniz. Sadece yazı ile anlatmak biraz zorluyor insanı :)

Örnek Method;

    public class OrnekDeneme
    {
        public static void deneme(ref bool osmankurt)
        {
            osmankurt = true;
        }
    }
Kullanımı;
            bool osmankurt = false;
            OrnekDeneme.deneme(ref osmankurt);
            var deger = osmankurt;

Görüşmek üzere
Osman KURT
Yazılım Uzmanı & MVC Eğitmeni