Başlangıç

Asp.Net C# Razor Wiev Engine ile Bot yapımı. (Sayfadaki Etiketleri Çekme)-7

5 Yorum


İstenen web sayfasından istenen etiket ve ya linkleri çekme kodları için Lütfen önce Aşağıdaki Konu Anlatımlarını Okuyunuz.

ASP.NET MVC NEDİR? -1

Asp.Net MVC 3 Visual Studio 2010 ile MVC projesi oluşturmayı ve Asp.Net MVC 3’ün nasıl çalıştığını anlama-2

Asp.Net MVC 3 Razor View Engine Kullanımı -3

Asp.Net MVC 3’te ViewBag Kavramı -4

ASP.NET MVC VIEWBAG, VIEWDATA, TEMPDATA -5

Asp.Net MVC 3 ViewBag ve ViewData Arasındaki Fark -6

Bu konudaki diğer makale ve örneklerde görüldüğü gibi oluşturduğunuz proje Razor Wiew Engine olacak.

  • Proje oluştuktan sonra HomeController.cs dosyasının içeriği;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Net;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;

namespace Mvcuygulama4.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = “Hoşgeldiniz ASP.NET MVC!”;
ViewData[“datas”] = ss();
return View();
}
List<string> dataList = new List<string>();
private List<string> ss()
{
string Site = “http://istenenadresiyaz.com/&#8221;;
WebClient client = new WebClient();
Stream data = client.OpenRead(Site);
StreamReader reader = new StreamReader(data, Encoding.GetEncoding(“utf-8”)); //tüm site içeriğini indirdik ve bir dosya sınıfına attık
string datas = reader.ReadToEnd();

string pattern3 = “<a.*?href=.*?>(.*?(<img.*?>).*?)</a>”; //aradığımız etiketler.
MatchCollection mathcollection = System.Text.RegularExpressions.Regex.Matches(datas, pattern3);//site kaynak kodları ile aradığımız etiketlerin string olarak karşılaştırma
foreach (Match match in mathcollection)
{
if (match.Value.ToString().Contains(“<img”))
dataList.Add(match.Value);
}
return dataList;
}

public ActionResult About()
{
return View();
}
}
}

  • Index.cshtml sayfasının içeriği;

@{
ViewBag.Title = “Home Page”;
}

<h2>@ViewBag.Message</h2>
<h2>Index</h2>
@{
List<string> datas = (List<string>)ViewData[“datas”];
foreach(string s in datas.ToList())
{
<hr />
<label>@s.ToString()</label>
}
}
<p>
To learn more about ASP.NET MVC visit <a href=”http://asp.net/mvc&#8221; title=”ASP.NET MVC Website”>http://asp.net/mvc</a&gt;.
</p>

Reklamlar

Asp.Net MVC 3’te ViewBag Kavramı -4

1 Yorum


ViewBag, MVC’de Dynamic View Data oluşturmayı sağlamaktadır. Dynamic View Data Dictionary, Runtime’da (çalışma anında) işleyen ve Controller ile View arasında veri transferini sağlayan yapıdır. Asp.Net’te aspx formumuza server side verileri, code behind’dan (aspx.cs) gönderiyorduk. MVC’de benzer işlemi ViewBag, ViewData vb. yapılarla aktarıyoruz. Öncelikle ViewBag Kullanımı;

HomeController’da Index() methoduna gidelim. ViewBag. yazalım ve çıkan açıklama metnini inceleyelim.

mvc6“This operation will be resolved at runtime” : Çalışma zamanında çözümlenecek olan kod bloğudur. Burada istediğimiz türden veriyi Index.aspx formumuza gönderebiliriz. Şimdi bir örnek ile nasıl yapıldığını inceleyelim.

public ActionResult Index()
{
    ViewBag.Message = “Hoşgeldiniz ASP.NET MVC!”;
 
    List<string> yazarlar = new List<string>
    {
        “Hasan KAÇAN”,
        “Ali UÇAN”,
        “Veli BİLEN”,
        “Halis GÖREN”,
        “Kemal ÖRTEN”
    };
    ViewBag.YazarListesi = yazarlar;
 
    return View();
}

List<string> türünden yazar listemizi oluşturup bu listeyi sayfada gösterelim. Bunun için bu değişkenimizi ViewBag ile Index.aspx’e gönderiyoruz.
ViewBag’a YazarListesi özelliği oluşturuyoruz ve yazarlar listemizi bu değişkene atıyoruz. Şimdi Index.aspx sayfamıza gidelim ve YazarListesi’nin değerlerini alt alta ekranda yazalım.
<%@ Page Language=”C#” MasterPageFile=”~/Views/Shared/Site.Master” Inherits=”System.Web.Mvc.ViewPage” %>
 
<asp:Content ID=”Content1″ ContentPlaceHolderID=”TitleContent” runat=”server”>
    Anasayfa
</asp:Content>
 
<asp:Content ID=”Content2″ ContentPlaceHolderID=”MainContent” runat=”server”>
    <h2><%: ViewBag.Message %></h2>
    <p>
        <% List<string> yazarlar = ViewBag.YazarListesi;
           foreach (var yazar in yazarlar)
           { %>
       
            <%:yazar %><br />
       
        <%}%>
    </p>
</asp:Content>
Kaynak:
Razor ile kullanımı:
mvc_1
mvc_3
Burada kırmızı çerçeveli alanda Razor seçin.
HomeController’da Index() methoduna gidelim. 
public ActionResult Index()
{
ViewBag.Message = “Hoşgeldiniz ASP.NET MVC!”;
var yazilimgelistir = new List<string> //bu şekildede liste oluşturulur yukarıdaki koddan farklı değil.
{
“Hasan KAÇAN”,”Ali UÇAN”,”Veli BİLEN”,”Halis GÖREN”,”Kemal ÖRTEN”
};
ViewBag.yazilimgelistir = yazilimgelistir;
return View();
}
mvc_4
index.aspx içine razor yapıda kodu yazıyoruz.
<h2>@ViewBag.Message</h2>
<ul>
@foreach (var gelistirici in ViewBag.yazilimgelistir)
{
<li>
@gelistirici
</li>
}
</ul>
Sonuç:
mvc7

Asp.Net MVC 3 Visual Studio 2010 ile MVC projesi oluşturmayı ve Asp.Net MVC 3’ün nasıl çalıştığını anlama-2

1 Yorum


Bir önceki girişten sonra önce Asp.Net MVC 3 için gerekli kurulumları bu linkten  indirebilirsiniz. İndirip kurma işleminden sonra Visual Studio 2010 ile MVC projesi oluşturmayı ve Asp.Net MVC 3’ün nasıl çalıştığını anlamaya çalışalım.

mvc_1

Öncelikle File->New Project ile yeni bir Asp.Net MVC 3 Web Aplication projesi oluşturuyoruz.

mvc_3

Aspx veya yeni çıkan Razor kod yapısı ileride detaylarına gireriz. Şuan Aspx seçiyoruz.

mvc_4

  • Content : Tasarımsal dosyaların bulunduğu klasördür. Themes, images vb tasarımsal dosyaları bu klasöre yerleştiriyoruz.
  • Controllers : Controller sınıflarının bulunduğu klasördür.
  • Models : Model sınıflarımızın bulunduğu klasördür.
  • Scripts : Javascript dosyalarımızın bulunduğu klasördür.
  • Views : Ekranlarımızın bulunduğu klasördür.
  • Global.asax : Uygulamanın methodlarının yakalanmasını sağlayan dosyamızdır.
Asp.Net MVC projemizin çalışma mantığı şu şekildedir :
  1. Proje çalıştırıldığında ilk önce Global.asax dosyamız çalışır ve yapılması gereken işlemler varsa onları gerçekleştirir ve yönlendirmeyi gerçekleştirir. Yönlendirme kodu başlangıçta aşağıdaki şekildedir.

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);

    routes.MapRoute(
        “Default”, // Route name
        “{controller}/{action}/{id}”, // URL with parameters
        new { controller = “Home”, action = “Index”, id = UrlParameter.Optional } // Parameter defaults
    );

}

 Projemizi çalıştırdığımızda Home/Index sayfamız açılacaktır. Action’ı About ile değiştirdiğimzde Home/About sayfamız açılacaktır.
  1. Global.asx’tan sonra hangi controller’a yönlendirme varsa o Controller’a yönlenmektedir. HomeController.cs’de Index() methoduna breakpoint yerleştirip inceleyelim.
  public ActionResult Index(){
ViewBag.Message = “Hoşgeldiniz ASP.NET MVC!”;return View();
}

Projemizi çalıştırdık. Global asax’tan HomeController’daki Index() methoduna yönlendirme yaptı. HomeController.cs’deki Index() methodumuza geldik ve burada return View() methodu ile karşılaştırdık. Bu method, Home klasörünün altındaki Index.aspx’i çalıştırmaktadır.
Burada dikkat etmemiz gereken önemli bir nokta, Index() methodunun geri döndürdüğü ActionResult türüdür. ActionResult, bu methodun bir Action döndürdüğünü belirtmektedir.
  1. Index.aspx dosyamızın içeriğini inceleyelim.

<%@ Page Language=”C#” MasterPageFile=”~/Views/Shared/Site.Master” Inherits=”System.Web.Mvc.ViewPage” %>

<asp:Content ID=”Content1″ ContentPlaceHolderID=”TitleContent” runat=”server”>
    Home Page
</asp:Content>

<asp:Content ID=”Content2″ ContentPlaceHolderID=”MainContent” runat=”server”>
    <h2><%: ViewBag.Message %></h2>
    <p>
        To learn more about ASP.NET MVC visit <a href=”http://asp.net/mvc” title=”ASP.NET MVC Website”>http://asp.net/mvc</a&gt;.
    </p>
</asp:Content>

Asp dosyalarımızı satır satır inceleyelim.
  • <%@ Page Language=”C#” MasterPageFile=”~/Views/Shared/Site.Master” Inherits=”System.Web.Mvc.ViewPage” %>
Bu satırda sayfamızın temel bilgilerini (MasterPage, language..) belirliyoruz.
  • <asp:Content ID=”Content1″ ContentPlaceHolderID=”TitleContent” runat=”server”>
  •     Home Page
  • </asp:Content>
Bu satırda, masterpage’de belirlediğimiz TitleContent’in içeriği doldurulmaktadır.
  • <asp:Content ID=”Content2″ ContentPlaceHolderID=”MainContent” runat=”server”>
  • </asp:Content>
Bu taglar arasında Masterpage’de belirlediğimiz MainContent’in içeriği doldurulmaktadır.
Bu örnekte en dikkat etmemiz gereken nokta şurasıdır:
  • <%: ViewBag.Message %>
HomeController.cs içindeki Index() methodunda ViewBag.Message propertysine “Hoşgeldiniz ASP.NET MVC!” değerini atamıştık. Burada ise bu değeri okuma işlemini gerçekleştiriyoruz.
Şimdi projemizi çalıştırıp inceleyelim.
mvc5
İlk Asp.Net MVC uygulamamızı bu şekilde çalıştırdık.
Kaynak:

ASP.NET MVC NEDİR? -1

1 Yorum


Asp.net Bot yazımı ile yazılara baktım karşıma bu sorun çıktı. Önce Şöyle bloglardaki tanımları bir derleyelim. ASP.NET MVC w3school anlatımıyla şu demekmiş;

“ASP.NET HTML, CSS, JavaScript ve sunucu taraflı programlama ile web sayfaları ve web siteleri yapmaya yarayan bir geliştirme yapısıdır.
ASP.NET 3 farklı geliştirme modeli sunar: Web pages, MVC (Model View Controller) ve Web Forms.”

MVC, uygulamanın kullanıcı arayüzünü 3 temel yapıya ayırır:

Model: Verinin nasıl değişeceğini ve nasıl yönetileceğini belirleyen iş kurallarını (Business Rules) içeren sınıfların tamamının bulunduğu katmandır. Genelde bunlar veritabanını temsil eden sınıflarlar veya domaini temsil eden nesnelerdir. EntityFramework, NHibernate gibi, entity-data-model ler de, model katmanında yer alabilir. Yani uygulamamızda kullanacağımız nesneler bu katmandadır.

View: Kullanıcı arabiriminin (User Interface – UI) gösterileceği katman. Dinamik olarak üretilen HTML şablonu bu katmandadır. Kısaca veri gösterim katmanı diyebiliriz.

Controller: Tüm sistem akışının, kullanıcı ile olan etkileşimi kontrol eden ve olayları yöneten sınıfların tamamı. View ve Model katmanları arasındaki ilişkiyi yönetir. Kullanıcıdan girdi alır, modelle iletişime geçer ve ne gösterileceğine karar verir.

ASP.NET MVC 1

13 MART 2009 da resmi olarak kodlar ve birim testlerle MVC mimarisi yayınlanmıştır. MVC mimarisinin bugün kullanılan bir çok özelliği aslında MVC 2 de gelecektir.

ASP.NET MVC 2

MVC 2 ilkinden 1 yıl sonra yayınlanmıştır (MART 2010). MVC 2 de olan bazı ana özellikler şunlardır:

  • Otomatik olarak oluşturulan kullanıcı arabirimi yardımcıları (UI Helpers) ve özelleştirilebilir şablonlar.
  • Hem server, hem de istemci taraflı, nitelik tabanlı (attribute-based) bir model doğrulama (model-validation) yapısı.
  • Strongly typed HTML Helpers
  • Geliştirilen Visual Studio araçları.


ASP.NET MVC 3

MVC 3, MVC 2 den 10 ay sonra yayınlanmıştır. Eklenen ana başlıklar:

  • Razor görüntüleme motoru (Razor View Engine).
  • .NET 4 dataannotation desteği.
  • Gelişmiş model doğrulama (model validation).
  • Unobtrusive JavaScript, jQuery Validation, ve JSON için daha iyi bir JavaScript desteği.
  • Yazılım ve platforma bağlı güncellemeler ve yönetim için NuGet kullanımı.

ASP.Net MVC Framework ‘ün ile getirdikleri yönünde bakacak olur isek; Controller kavramını kullanımı sayesinde, geliştirilen Web uygulamasının test kodu yazılması, daha kaliteli uygulama geliştirebilmesini sağlanmıştır. ASP.Net MVC ’nin getirdiklerini kullanıcı tarafından bakacak olur isek; temiz içerik ve anlamlı adres(Routing) üretimidir. Bu özellikler uygulama içerisinde sunulan ürün ya da bilgilerinin arama motorları(Bing,Google) daha kolay bulabilmesi, hazırlanan içeriğin hızlı cevap vermesini sağlamaktadır.

ASP.Net MVC Framework’ün uygulamalarımıza katığı bu özelliklerin yanında yeni sürümü ile de birçok kolaylık sunmaktadır. Bu yenilikler aşağıdaki gibi sıralama yapabiliriz.

  • Razor View Engine
  • Multi View Engine
  • Dependency Injection kullanım kolaylığı
  • Dynamic View ve ViewModel
  • Validation Impovemets
  • Session Yönetimi
  • Global Action Filters
  • JavaScript ve AJAX yenlikleri

Şimdi yenilikler hakkında kısa bilgilere verelim.

Razor View Engine

ASP.Net MVC 3, önceki sürümlerinde farklı olarak yeni bir View Engine yapısı ile gelmektedir. ASP.Net MVC ‘nin önce ki sürümlerinde Saprk View Engine ya da NHaml gibi View Engine yapıları ile View tasarımlarımız daha kolay bir şekilde gerçekleştir biliyorduk. Razor View Engine ile ASP.Net MVC 3 bütünleşik olarak geldiği için ve .Net 4 desteği ile ASP.Net MVC uygulamalarını daha kolay ve hızlı geliştirebiliyoruz.

Multi View Engine

ASP.Net MVC 3 yeniliklerinde bir olan Razor View Engine gibi ASP.Net MVC uygulamalarında View tasarlama işlemlerimizi kullanabileceğimiz birden fazla View Engine bulunmaktadır. Multi View Engine yeniliği sayesinde, uygulama projemize şablon dahil etme aşamasına farklı View Engine kullanmayı amaçlamaktadır.

Dependency Injection kullanım kolaylığı

ASP.Net MVC 2 ve önceki sürümlerinde MvcTurbine ve benzeri araçları kullanarak ASP.Net MVC uygulamalarımızda IoC uygulamalarımızı gerçekleştiriyorduk. ASP.Net MVC 3 sürümü ile ise, çözümü kendi içerisinde oluşturmayı amaçlayan Ioc ara yüz(interface) nesneleri bulunmaktadır.

Dynamic View ve ViewModel

Bu özellik ile .Net 4 yeniklerinde biri olan Dynamic Type özelliğini ASP.Net MVC içerisinde yer alması anlamına gelmektedir. Bu sayede sanki öyle bir özellik varmışçasına, söz konusu özelliği kullanabilmemize izin vermektedir. .Net 4 ile C# herhangi bir alanda hazırlanaDynamic işlemde olduğu gibi söz konusu tanımlama çağırıldığında hata olup olmadığı durumu anlaşılmaktadır.

Validation Impovemets

ASP.Net 4 ile birlikte gelene yeniliklerden bir tanesidir. Bu şekliyle ASP.Net 4 üzerine gelene gelişmiş doğrulama yapısını, ASP.Net MVC 3birlikte kullanabilmekteyiz.

Session Yönetimi(SessionState)

Geliştirmiş olduğumuz ASP.Net MVC projesinin içerisinde bulunan Controller nesnesini Session içerisinde veri taşıması istemeye biliriz. Bu gibi durumlar için geliştirilmişi Attribute yapısıdır.

Global Action Filters

Bazı durumlarda geliştirmiş olduğumuz ASP.Net MVC uygulamasının, uygulama yapılan her istemi denetlemek ya da uygulamalardan yapılan istemler sırasında gerçekleşecek işlemler olabilir. Bu gibi durumlar için geliştirilmiş bir yapıdır.

JavaScript ve AJAX yenlikleri

Standart bir ASP.Net MVC şablonu oluşturduğumuz varsayılan olarak projemize Script klasörü gelmektedir. Bu klasör içerisinde ise,ASP.Net AJAX ve JQuery ile ilgili JavaScirpt dosyaları gelmektedir. ASP.Net MVC 3 sürümü ile AJAX konusunda daha iyileştirilmiş bir şekilde kullanıcılarına sunulmaktadır.

Bir sonraki konuda ASP.Net MVC 3 için gerekli kurulum ve Razor görüntüleme motoru (Razor View Engine) veuygulamalar ile devam etmeye çalışacağım.

Kaynak:

http://alirizaadiyahsi.blogspot.com/2013/01/aspnet-mvc-dersleri-11-aspnet-mvc-nedir.html

http://www.yazilimdevi.com/yazilimdevi/Makaleler-532-asp-net-mvc-3-notlari-1giris.aspx

Bana Silverlight Anlat

meslek lisesi ders notları

Eren ÇOLAK

Yazılım Mühendisi Olmak Yolunda İlerliyor...