Altbilgi içeriğine atla
.NET YARDıM

Razor C# (Geliştiriciler İçin Nasıl Çalışır)

Razor, .NET Core ve .NET Framework ile dinamik web sayfaları oluşturmak için kullanılan bir sunucu tarafı işaretleme dilidir. Öncelikli olarak ASP.NET Core ile birlikte kullanılır. Razor Sayfaları, kodun uygulamalar içinde temiz ve doğrudan organize edilmesine olanak tanıyan ASP.NET Core'un yeni bir yönüdür ve kod tekrarının sorun olmasını azaltır. Razor, C# veya VB (Visual Basic) kullanılarak sunucu tarafında HTML ile entegre edilip web içerikleri oluşturur.

Bu eğitim, Visual Studio'da Razor ve C# kullanarak temel bir uygulamanın nasıl oluşturulacağı hakkında rehberlik edecektir. Başlayalım!

Gereksinimler

Razor'un dünyasına dalmadan önce, aşağıdaki kurulumların yüklü olduğundan emin olun:

.NET Core SDK

  1. Visual Studio

Bunlar, bu kılavuz için kullanacağımız Razor Görünüm Motoru ve proje şablonlarını sağlar. Ayrıca, birden fazla işletim sistemi üzerinde çalışabilirler, yani Windows, Linux veya macOS üzerinde bulunup bulunmadığınızdan bağımsız olarak takip edebilirsiniz.

Adım 1 Yeni Bir Razor Sayfaları Projesi Oluşturma

Microsoft Visual Studio'yu açın ve şu adımları izleyin:

  1. "File" (Dosya) üzerine tıklayın > "New" (Yeni) > "Project" (Proje).
  2. Proje şablonu seçim ekranında, "Blazor Server App" (Blazor Sunucu Uygulaması) seçeneğini belirleyin.

Razor C# (Geliştiriciler İçin Nasıl Çalışır) Şekil 1

  1. Projenizi "IronPDFExample" olarak adlandırın ve "Create" (Oluştur) üzerine tıklayın.

Razor C# (Geliştiriciler İçin Nasıl Çalışır) Şekil 2

  1. Aşağı açılan menülerden ".NET 7.0" veya daha üstünü seçin.

Razor C# (Geliştiriciler İçin Nasıl Çalışır) Şekil 3

Artık yeni bir Razor Sayfaları projeniz var.

Razor Sözdizimi ve Dosyalarını Anlama

Razor dosyaları, C# (bu nedenle 'cs') ve HTML birleştirilerek, .cshtml dosya uzantısını kullanır. Visual Basic kullansaydık, dosya uzantısı .vbhtml olarak değişirdi.

Çözüm Gezgini'nizde, 'Index.cshtml' adlı .cshtml uzantılı dosyayı bulun ve açın. Bu noktada, HTML kodu ve C# kodunun bir kombinasyonunu görürsünüz. Bu karışımı sağlayan Razor Çözücüsüdür.

Razor Söz Dizimi

ASP.NET Core'da Razor Sözdizimi, HTML ve sunucu tarafı kodun birleşimidir. Sunucu kodu, ya C# ya da VB kodudur. Razor kodu, @ sembolüyle belirtilir ve HTML istemciye gönderilmeden önce sunucuda çalıştırılır.

Basit Razor sözdiziminin bir örneği:

<p>The current time is @DateTime.Now</p>
<p>The current time is @DateTime.Now</p>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> The current time is @DateTime.Now</p>
$vbLabelText   $csharpLabel

Bu kod örneğinde, @DateTime.Now bir Razor kodudur. Sunucuda çalıştırılır ve mevcut tarih ve saatle değiştirilir, müşteriye gönderilmeden önce.

Razor Görünümü

Razor'da 'görünüm' terimi, kullanıcılara bilgi sunmayı amaçlayan herhangi bir web sayfasına karşılık gelir. Razor Görünüm Motoru, kullanıcıya HTML sayfası sunumundan sorumludur.

@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
page model ReadOnly Property () As IndexModel
	ViewData("Title") = "Home page"
End Property

'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<div class="text-center"> <h1 class="display-4"> Welcome</h1> <p> Learn about <a href="https://docs.microsoft.com/aspnet/core"> building Web apps @with ASP.NET Core</a>.</p> </div>
$vbLabelText   $csharpLabel

Dinamik İçerik İçin Razor İşaretleme Kullanımı

Razor İşaretleme, HTML işaretlemesi içinde sunucu tarafı kod eklememizi sağlar. Kod blokları, satır içi ifadeler ve HTML kodlanmış ifadeler gibi çeşitli kod yapıları kullanabiliriz.

Satır İçi İfade

Bir satır içi ifade, sonucu doğrudan HTML'e aşağıdaki kodu kullanarak çıkışı alır:

<p>Hello, my name is @Model.Name</p>
<p>Hello, my name is @Model.Name</p>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> Hello, my name is @Model.Name</p>
$vbLabelText   $csharpLabel

Burada, @Model.Name, Razor görünümüne geçen modelin Name özelliğinin değerini çıkarsayan bir satır içi ifadedir.

Kod Bloğu

Kod blokları, sunucu üzerinde çalıştırılan kod bölümleridir:

@{
    var name = "IronPDF";
}
<p>Hello, my name is @name</p>
@{
    var name = "IronPDF";
}
<p>Hello, my name is @name</p>
@
If True Then
	Dim name = "IronPDF"
End If
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> Hello, my name is @name</p>
$vbLabelText   $csharpLabel

Bu kod örneğinde, { } arasındaki Razor kodu bir kod bloğudur.

Kontrol Yapıları

Razor Sayfalarımıza if-ifadeleri ve döngüler gibi kontrol yapıları da kullanabiliriz:

@{
    var count = 5;
}

@if (count > 3)
{
    <p>The count is greater than 3.</p>
}
@{
    var count = 5;
}

@if (count > 3)
{
    <p>The count is greater than 3.</p>
}
@
If True Then
	Dim count = 5
End If

'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'@if(count > 3)
'{
'	<p> The count is greater than 3.</p>
'}
$vbLabelText   $csharpLabel

Yukarıdaki kod örneğinde, if ifadesi sunucuda çalışan sunucu tarafı kodunun bir parçasıdır ve çıktısı oluşan HTML sayfasına eklenir.

Switch İfadesi

Switch ifadeleri, C# programlama dilindeki şartlı kontrol yapılarının bir türüdür. Kod blokları içinde kullanılabilirler.

@{
    var fileFormat = "PDF";
    var message = "";

    switch (fileFormat) 
    {
        case "PDF":
            message = "You selected PDF.";
            break;
        default:
            message = "Invalid selection.";
            break;
    }
}

<p>@message</p>
@{
    var fileFormat = "PDF";
    var message = "";

    switch (fileFormat) 
    {
        case "PDF":
            message = "You selected PDF.";
            break;
        default:
            message = "Invalid selection.";
            break;
    }
}

<p>@message</p>
@
If True Then
	Dim fileFormat = "PDF"
	Dim message = ""

	Select Case fileFormat
		Case "PDF"
			message = "You selected PDF."
		Case Else
			message = "Invalid selection."
	End Select
End If

'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> @message</p>
$vbLabelText   $csharpLabel

Razor'da Hello World

Herhangi bir programlama dilindeki en basit programlardan biri "Hello World" dir. Razor'da, "Hello World" 'ü aşağıdaki örnekle gösterildiği gibi basit bir satır içi ifade ile görüntüleyebilirsiniz:

<p>@("Hello World")</p>
<p>@("Hello World")</p>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> @("Hello World")</p>
$vbLabelText   $csharpLabel

Razor'da Döngüler

Razor sözdizimi, foreach ifadesi gibi döngüler yazmanıza olanak tanır. Web sayfanızda görüntülemek istediğiniz bir isim listesine sahip olduğunuzu varsayalım. Bunu, Razor sözdiziminde foreach ifadesi ile başarabilirsiniz.

@{
    var names = new List<string> { "John", "Doe", "Smith" };
}

@foreach (var name in names)
{
    <p>@name</p>
}
@{
    var names = new List<string> { "John", "Doe", "Smith" };
}

@foreach (var name in names)
{
    <p>@name</p>
}
@
If True Then
	Dim names = New List(Of String) From {"John", "Doe", "Smith"}
End If

'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'@foreach(var name in names)
'{
'	<p> @name</p>
'}
$vbLabelText   $csharpLabel

Bu foreach ifadesi, listedeki her bir adı döngüye sokar ve web sayfasına çıktısını verir.

Etiket Yardımcılarını Anlama

ASP.NET MVC'de Etiket Yardımcıları, Razor dosyalarındaki HTML öğelerini oluşturmak ve render etmek için sunucu tarafı kodu etkinleştirir. HTML yardımcılarına biraz benzeseler de, daha HTML benzeri bir sözdizimine sahiptirler. Razor görünümlerinizdeki HTML benzeri öğeleri, istemcinin tarayıcısına gönderilen HTML işaretleme dönüştürürler. Bir anchor Etiket Yardımcısının kod örneği:

<a asp-controller="Home" asp-action="Index">Home</a>
<a asp-controller="Home" asp-action="Index">Home</a>
HTML

Kullanıcı Etkileşimini Yönetme

Razor Sayfaları, kullanıcı etkileşimlerini yönetmek için işleyici yöntemleri kullanır. Örneğin, form gönderimini işlemek için Razor Sayfa'nın karşılık gelen Sayfa Modeli dosyasında OnPostAsync adlı bir yöntem oluşturabiliriz.

public async Task<IActionResult> OnPostAsync()
{
    if (!ModelState.IsValid)
    {
        return Page();
    }

    // Perform some operation here

    return RedirectToPage("./Index");
}
public async Task<IActionResult> OnPostAsync()
{
    if (!ModelState.IsValid)
    {
        return Page();
    }

    // Perform some operation here

    return RedirectToPage("./Index");
}
Public Async Function OnPostAsync() As Task(Of IActionResult)
	If Not ModelState.IsValid Then
		Return Page()
	End If

	' Perform some operation here

	Return RedirectToPage("./Index")
End Function
$vbLabelText   $csharpLabel

Razor'da Yorumlar

Razor, C# tarzı yorumları da destekler. Razor yorumlarının sunucu tarafı olduğunu unutmayın, bu nedenle onlar tarayıcıya gönderilmezler. Bu şekilde görünürler:

@* This is a Razor comment *@
@* This is a Razor comment *@
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@* This is a Razor comment *@
$vbLabelText   $csharpLabel

Ve bu birden fazla satırlı bir yorumdur:

@*
    This is a multi-line Razor comment.
    It's useful when you have a lot to say.
*@
@*
    This is a multi-line Razor comment.
    It's useful when you have a lot to say.
*@
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@* This is a multi-line Razor comment.It's useful @when you have a lot @to say. *@
$vbLabelText   $csharpLabel

Razor görünüm ve sayfaları HTML yorumlarını da içerebilir. Bu yorumlar, tarayıcıya gönderilen HTML çıktısında görünürler.

HTML

Bir Razor Sayfasına Modelleri Geçme

Razor, modeleri sunucudan sayfaya geçmenizi sağlar. @model direktifi, geçen nesne türünü belirtmek için kullanılır. Bu model özelliği, aşağıdaki örnekte gösterildiği gibi Razor sayfasında erişilebilir.

@page
@model ExampleModel

<h2>@Model.Title</h2>
<p>@Model.Description</p>
@page
@model ExampleModel

<h2>@Model.Title</h2>
<p>@Model.Description</p>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@page @model ExampleModel <h2> @Model.Title</h2> <p> @Model.Description</p>
$vbLabelText   $csharpLabel

IronPDF ile Razor'da PDF'ler Oluşturma

Discover IronPDF for .NET, geliştiricilerin .NET'te HTML'den PDFler, görüntüler ve hatta mevcut web sayfalarından PDF'ler oluşturmasına olanak tanıyan popüler bir kütüphanedir. Raporlar, faturalar ve standart bir baskı formatının gerekli olduğu her türlü belge oluşturmak için mükemmel bir araçtır. IronPDF, ASP.NET MVC ve ASP.NET Razor Sayfaları çerçevesi içerisinde mükemmel çalışır.

Kurulum

Önce, IronPDF paketini yüklemeniz gerekir. Bunu Visual Studio'daki NuGet Paket Yöneticisi Konsolundan yapabilirsiniz. Aşağıdaki komutu çalıştırın:

Install-Package IronPdf

Basit Bir PDF Oluşturma

Şimdi, Razor Sayfanızda HTML kodundan basit bir PDF oluşturalım. Öncelikle, Razor sayfanızın en üstüne IronPDF ad alanını içe aktaralım.

@using IronPdf;
@using IronPdf;
Dim IronPdf As [using]
$vbLabelText   $csharpLabel

Ardından, IronPDF ile bir PDF oluşturabilirsiniz. Diyelim ki, Razor sayfanızda tıklandığında basit bir PDF oluşturacak bir buton var.

Sayfa Model dosyamızda ilgili işleyicide aşağıdaki kodu ekleyebiliriz:

@page "/pdf"
@using IronPdf;
@inject IJSRuntime JS

<PageTitle>Create PDF</PageTitle>

<h1>Create PDF</h1>

<div class="form-outline">
    <button class="btn btn-primary mt-3" @onclick="CreatePDF">Create PDF</button>
</div>

@code {
    private string htmlString { get; set; }

    private async Task CreatePDF()
    {
        var Renderer = new IronPdf.ChromePdfRenderer();
        Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A2;

        var doc = Renderer.RenderUrlAsPdf("https://ironpdf.com/");

        using var Content = new DotNetStreamReference(stream: doc.Stream);

        await JS.InvokeVoidAsync("SubmitHTML", "ironpdf.pdf", Content);
    }
}

ÇIKTI

Razor C# (Geliştiriciler İçin Nasıl Çalışır) Şekil 4

Razor C# (Geliştiriciler İçin Nasıl Çalışır) Şekil 5

Sonuç

Başarıyla Razor C#'nin temellerini öğrendiniz ve uygulamanız içerisinde IronPDF entegrasyonunu keşfettiniz. Visual Studio'da yeni bir proje oluşturarak başladınız ve ardından dinamik web sayfaları oluşturmak için Razor sözdizimini kullanmayı öğrendiniz. Ayrıca, HTML kodundan ve hatta tam Razor Görünümlerinden PDF'ler oluşturmak için IronPDF'in nasıl kullanılabileceğini keşfettiniz.

Şimdi, daha gelişmiş uygulamalar oluşturmaya devam ederken, IronPDF'in sunduğu güçlü özelliklerden yararlanabilirsiniz. IronPDF'i ücretsiz deneyebilirsiniz ve eğer değerli bulursanız, ihtiyaçlarınıza uygun bir lisansı satın alabilirsiniz.

Sıkça Sorulan Sorular

Razor'u C# içinde kullanarak HTML'den PDF nasıl oluşturabilirim?

HTML'den PDF oluşturmak için C# içinde Razor kullanarak IronPDF kütüphanesinden yararlanabilirsiniz. Öncelikle IronPDF paketini yükleyin, IronPDF ad alanını içe aktarın ve ardından RenderHtmlAsPdf gibi API yöntemlerini kullanarak HTML içeriğinizi PDF formatına dönüştürün.

Web geliştirmede Razor sözdiziminin rolü nedir?

Razor sözdizimi, web geliştirmede C# veya VB ile HTML'yi birleştirerek dinamik web sayfaları oluşturmada önemli bir rol oynar. Geliştiricilerin HTML, istemcinin tarayıcısına gönderilmeden önce çalıştırılan sunucu tarafı kodunu yazmasına olanak tanır, böylece kesintisiz entegrasyon ve işlevsellik sağlar.

Razor Sayfaları web uygulama geliştirmeyi nasıl geliştirir?

Razor Sayfaları, kod yönetimini yapılandırılmış ve düzenli hale getirerek, ortalığı karmaşa ve tekrarları azaltarak web uygulama geliştirmeyi geliştirir. Geliştiricilerin sayfa tabanlı bir formatta işlevsellik oluşturmaya odaklanmalarına olanak tanır ve geliştirme sürecini basitleştirir.

Tag Helpers nelerdir ve Razor Sayfalarına nasıl yardımcı olurlar?

Razor Sayfalarındaki Tag Helpers, HTML benzeri bir sözdizimiyle HTML öğeleri oluşturup render etmek için sunucu tarafı kodunu etkinleştirir. Bu, öğeleri sunucuda istemcinin tarayıcısına göndermeden önce dönüştürerek temiz ve sürdürülebilir HTML biçimlendirmesi üretmeye yardımcı olur.

Razor Sayfalarında kullanıcı etkileşimlerini nasıl yönetebilirim?

Razor Sayfalarında kullanıcı etkileşimleri, OnPostAsync gibi kullanıcılara özel yöntemler kullanılarak yönetilir. Bu yöntemler form gönderilerini ve diğer kullanıcı girdilerini işleyerek geliştiricilerin istemcilerden alınan verilere dayalı olarak işlemleri yürütmelerine olanak tanır.

'@model' direktifinin Razor'daki önemi nedir?

'@model' direktifi, bir Razor sayfasına geçirilen nesnenin veri türünü belirttiği için önemlidir. Bu, geliştiricilerin sayfa içindeki modelin özelliklerine doğrudan erişip manipüle etmelerine olanak tanıyarak veri bağlama ve etkileşimi kolaylaştırır.

Visual Studio'da C# ile Razor kullanmanın faydaları nelerdir?

Visual Studio'da C# ile Razor kullanmak, HTML ile sunucu tarafı mantığın entegrasyonu, Razor Sayfaları aracılığıyla daha verimli bir geliştirme süreç ve dinamik web içeriğini kolayca oluşturma gibi faydalar sunar. Ayrıca, Visual Studio, Razor geliştirmeyi destekleyen güçlü araçlar ve şablonlar sunar.

Razor sözdizimini hem C# hem de VB için kullanabilir miyim?

Evet, Razor sözdizimi, sunucu tarafı mantığı HTML ile birleştirmek için hem C# hem de VB (Visual Basic) ile kullanılabilir. Bu esneklik, geliştiricilerin tercih ettikleri dili seçmelerine olanak tanır ve Razor'un web geliştirmedeki yeteneklerinden yararlanmalarına imkan verir.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara