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. Ağırlıklı olarak ASP.NET Core ile birlikte kullanılır. Razor Pages, kodun uygulama içinde düzenlenmesinde temiz ve anlaşılır bir yol sağlayarak kodun tekrar edilmesi sorununu azaltan ASP.NET Core'un yeni bir yönüdür. Razor, sunucu tarafında C# veya VB (Visual Basic) kullanarak HTML ile web içeriği oluşturur.
Bu eğitim, Visual Studio'da C# ile Razor kullanarak temel bir uygulama oluşturma konusunda size rehberlik edecektir. Başlayalım!
Ön Koşullar
Razor dünyasına dalmadan önce, aşağıdakilerin yüklü olduğundan emin olun:
- .NET Core SDK
- Visual Studio
Razor View Motoru ve bu eğitim için kullanacağımız proje şablonlarını sağladıklarından gerekli olanlardır. Ayrıca, Windows, Linux veya macOS olması fark etmeksizin birden fazla işletim sistemi üzerinde çalışabilirler.
Adım 1 Yeni Bir Razor Sayfaları Projesi Oluşturma
Microsoft Visual Studio'yu açın ve şu adımları izleyin:
- "Dosya"" > "Yeni" > "Proje""'ye tıklayın.
- Proje şablonunu seçme ekranında, "Blazor Sunucu Uygulaması" seçenek.

- Projenizi "IronPDFExample" olarak adlandırın ve "Oluştur" a tıklayın.

- Açılır menülerden ".NET 7.0" veya daha yeni bir sürümünü seçin.

Artık yeni bir Razor Sayfaları projeniz var.
Razor Sözdizimi ve Dosyalarını Anlamak
Razor dosyaları, C# (bu yüzden 'cs') ile HTML birleştirerek .cshtml dosya uzantısını kullanır. Visual Basic kullanıyor olsaydık, dosya uzantısı .vbhtml olarak değişecekti.
Çözüm Gezgini'nde, "Index.cshtml" adlı .cshtml uzantı dosyasını bulun ve açın. HTML kodu ve C# kodunun birleşimini burada göreceksiniz. Bu karışım, Razor Parser tarafından mümkün kılınmaktadır.
Razor Sözdizimi
ASP.NET Core'da Razor Söz Dizimi, HTML ve sunucu tarafı kodun bir kombinasyonudur. 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 bir Razor söz dizimi ö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>
Bu kod örneğinde, @DateTime.Now bir Razor kodudur. Bu kod sunucuda yürütülür, şu anki tarih ve zamanla değiştirilir ve müşteriye gönderilmeden önce gerçekleştirilir.
Razor Görünümü
Razor'daki "view" terimi, kullanıcıya bilgi sunmayı amaçlayan herhangi bir web sayfasını ifade eder. Razor Görüntü Motoru, HTML sayfasını kullanıcıya render etmekten 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>
Dinamik İçerik için Razor İşaretlemesi Kullanımı
Razor İşaretlemesi, HTML işaretlememizin içine sunucu tarafı kod eklememize izin verir. 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'ye yazarak şu kodu kullanı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>
Burada, @Model.Name Razor görünümüne geçirilen modelden Name özelliğinin değerini çıktılar.
Kod Bloğu
Kod blokları sunucuda çalışan kod parçalarıdır:
@{
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>
Bu kod örneğinde, { } arasındaki Razor kodu bir kod bloğudur.
Kontrol Yapıları
Razor Sayfalarımızda 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>
'}
Yukarıdaki kod örneğinde, if ifadesi sunucuda çalışan sunucu tarafı kodunun bir parçasıdır ve çıktısı ortaya çıkan HTML sayfasına eklenir.
Switch Ifadesi
C# programlama dilinde bulunan bir tür koşullu kontrol yapısı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>
Razor'da Hello World
Herhangi bir programlama dilindeki en basit programlardan biri "Hello World" dir. Razor'da, "Hello World" ü aşağıdaki örnekte 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>
Razor'da Döngüler
Razor söz dizimi, foreach ifadesi gibi döngüler yazmanıza olanak tanır. Bir 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>
'}
Bu foreach ifadesi, listedeki her bir ismin üzerinden geçer ve onu web sayfasına çıktılar.
Tag Helpers Anlamak
ASP.NET MVC'deki Tag Helpers, sunucu tarafı kodunun Razor dosyalarında HTML öğeleri oluşturmasına ve render etmesine olanak tanır. HTML yardımcılarına biraz benzerler ancak daha HTML benzeri bir sözdizimine sahiptirler. Razor görünümlerinizdeki HTML benzeri öğeleri, müşterinin tarayıcısına gönderilen HTML işaretlemesine dönüştürürler. Bir bağlantı Tag Helper kod örneğini düşünün:
<a asp-controller="Home" asp-action="Index">Home</a>
<a asp-controller="Home" asp-action="Index">Home</a>
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 Sayfası'nın ilgili Sayfa Modeli dosyasında OnPostAsync adlı bir metot 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
Razor'da Açıklamalar
Razor ayrıca C# stilinde açıklamaları destekler. Unutmayın, Razor açıklamaları sunucu tarafıdır, yani tarayıcıya gönderilmezler. Böyle 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 *@
Ve bu çok satırlı bir açıklamadır:
@*
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. *@
Razor görünüm ve sayfaları HTML açıklamalarını içerebilir. Bu açıklamalar tarayıcıya gönderilen HTML çıktısında görünür.
Modelleri Bir Razor Sayfasına Geçirme
Razor, sunucudan sayfaya modeller aktarabilmenizi sağlar. @model yönergesi, geçirilen nesnenin 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>
Razor'da IronPDF ile PDF Oluşturma
IronPDF for .NET, geliştiricilerin .NET'te HTML'den PDF, resimler ve hatta mevcut web sayfaları oluşturmalarına olanak tanıyan popüler bir kütüphanedir. Raporlar, faturalar ve standart baskı formatının gerekli olduğu diğer tüm belgeler için mükemmel bir araçtır. IronPDF, ASP.NET MVC ve ASP.NET Razor Sayfaları çerçevesinde mükemmel çalışır.
Kurulum
Öncelikle, 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. İlk olarak, Razor sayfanızın en üstünde IronPDF ad alanını içe aktaralım.
@using IronPdf;
@using IronPdf;
Dim IronPdf As [using]
Ardından, IronPDF kullanarak bir PDF oluşturabilirsiniz. Diyelim ki Razor sayfamızda tıklanınca basit bir PDF oluşturacak bir düğmemiz var.
İlgili Sayfa Modeli dosyamızdaki 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


Sonuç
Razor C#'nin temellerini başarıyla öğrendiniz ve IronPDF ile uygulamanızda PDF dosyaları oluşturmayı nasıl entegre edeceğinizi 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öz dizimini nasıl kullanacağınızı öğrendiniz. Ayrıca IronPDF'nin HTML kodundan ve hatta tamamlanmış Razor Görünümlerinden PDF oluşturmak için nasıl kullanılabileceğini de keşfettiniz.
Şimdi, daha gelişmiş uygulamalar oluşturmaya devam ederken, IronPDF'nin sunduğu güçlü özelliklerden yararlanabilirsiniz. IronPDF'yi ücretsiz deneyebilir ve değerli bulursanız, ihtiyaçlarınıza uygun bir lisans satın alabilirsiniz.
Sıkça Sorulan Sorular
Razor ile C# kullanarak HTML'den PDF oluşturmam için nasıl bir yol izlemeliyim?
Razor ile C# kullanarak HTML'den PDF oluşturmak için IronPDF kütüphanesini kullanabilirsiniz. İlk olarak, IronPDF paketini indirin, IronPDF isim alanını içe alın ve ardından HTML içeriğinizi PDF formatına dönüştürmek için RenderHtmlAsPdf gibi API yöntemlerini kullanın.
Razor söz dizimi web geliştirmede ne gibi bir rol oynar?
Razor söz dizimi, C# veya VB'yi HTML ile birleştirerek dinamik web sayfaları oluşturmayı sağlar, web geliştirmede önemli bir rol oynar. Geliştiricilerin HTML istemcinin tarayicısına gitmeden önce çalıştırılan sunucu-tarafı kod yazmalarına izin verir, entegrasyon ve işlevselliği kolaylaştırır.
Razor Sayfaları web uygulaması geliştirmeyi nasıl geliştirir?
Razor Sayfaları, kodun yönetilmesini yapılandırılmış ve düzenli bir şekilde sağlayarak, kopyalamanın ve karmasasikların azaltliğını ortadan kaldırarak web uygulaması geliştirmeyi geliştirir. Geliştiricilerin sayfa bazlı bir format içinde işlevsellik oluşturmaya odaklanmasını kolaylaştırarak geliştirme sürecini sadeleştirir.
Etiket Yardımcıları nedir ve Razor Sayfaları'nda nasıl yardımcı olurlar?
Razor Sayfaları'ndaki Etiket Yardımcıları, sunucu-tarafı kodun HTML benzeri bir söz dizimiyle HTML elemanları oluşturmasını ve render etmesini sağlarken yardımcı olur. Bu, elemanları istemcinin tarayıcısına göndermeden önce sunucuda dönüştürerek temiz ve bakımı kolay HTML markup'u üretmeye yardımcı olur.
Kullanıcı etkileşimlerini Razor Sayfaları'nda nasıl halledebilirim?
Razor Sayfaları'nda kullanıcı etkileşimleri OnPostAsync gibi handler yöntemleri kullanılarak yönetilir. Bu yöntemler, form gönderimlerini ve diğer kullanici girdilerini işleyerek, geliştiricilerin istemcilerden alınan verilere dayalı işlemler yapmalarına olanak tanır.
'@model' direktifinin Razor'daki önemi nedir?
Razor'daki '@model' direktifi, bir Razor sayfasına geçirilen nesnenin veri türünü belirtir. Bu, geliştiricilerin modelin özelliklerine doğrudan sayfa icerisinde erismelerini ve bunları manipüle etmelerini sağlar, veri bağlamayı ve etkileşimi kolaylaştırır.
Visual Studio'da C# ile Razor kullanmanın avantajları nelerdir?
Visual Studio'da C# ile Razor kullanmanın avantajları arasında HTML ile sunucu-tarafı mantığın entegrasyonu, Razor Sayfaları üzerinden streamline edilmiş geliştirme ve kolayca dinamik web içeriği oluşturabilme yeteneği yer alır. Ek olarak, Visual Studio, Razor geliştirmesini destekleyen sağlam araçlar ve şablonlar sunar.
Razor söz dizimini hem C# hem de VB için kullanabilir miyim?
Evet, Razor söz dizimi, 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 izin verirken Razor'un web geliştirme yeteneklerinden faydalanmalarını sağlar.




