Archive for .NET
Kasım 9, 2011 at 15:27 · Kategori: .NET, Jquery
Jquery’nin $.ajax fonksiyonu ile, oluşturmuş olduğum bir webservice’i kullanmanın kısaca yolunu aktarıp, öğrendiğim ipuçlarını paylaşacağım. Senaryomuz kısaca iki sayfadan oluşacak. Bunlardan biri sırasıyla varsayılan adlarıyla WebForm1.aspx web sayfası, diğeri ise WebService1.asmx web service olacaktır.
WebForm’da form içerisinde kullanıcı adı alan bir textbox ve bir button olmak üzere service’e json request’de bulunan bir ajax çağrımı gerçekleştireceğiz. Service ise bu kullanıcı adına “Merhaba”+KullanıcıAdı ekleyerek bize yine json formatında cevap gönderecek.
WebForm içerisindeki ajax çağrımını gerçekleştiren javascript:
function docheck() {
var username = $('#username').val();
$.ajax({
type: "POST",
url: "WebService1.asmx/HelloWorld",
data: "{'Name':'" + username + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (val) {
alert(val.d);
},
error: function (val) {
alert("Hata");
}
});
}
Şimdi de WebService dosyamızı oluşturalım:
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string HelloWorld(string Name)
{
return "Merhaba "+ Name;
}
}
Böylece artık ajax requestler ile tüketebileceğimiz bir servis methodu yaratmış olduk. Peki bu senaryoyu gerçekleştirirken neler öğrendim:
- JSON gönderip almak için servis class’ının üstüne [System.Web.Script.Services.ScriptService] isimli attribute’ün eklenmesinin gereklilik olduğunu. Aynı şekilde XML transferi için böyle birşey gerekmediğini
- ASP.NET 3.5 ile gelen bir özellik olan, JSON objesinin “d” objesi ile sarmalandığını, bu sebeple servisten dönen cevap basit tipler(string, int, bool) dahi olsa senaryomuzdaki gibi val.d diyerek değerlere ulaşmamız gerektiğini. Bu uygulamanın temel sebebinin XSS saldıralarından korunmak olduğunu, zira object içerisine herhangi bir anlamlı javascript ifadesi yazdığımızda eğer request get ise bunun yorumlanabileceğini
Yararlandığım kaynaklar:
Bir sonraki yazımda attribute kullanımından bahsederek, reflection’a giriş yapayacağım.
İyi çalışmalar,
Ağustos 7, 2011 at 12:19 · Kategori: .NET, Kısa Notlar

NuGet .NET projelerinizde 3.parti kütüphane ihtiyacınızı bir komut dizisi yardımıyla projelerinize eklemenize yarayan oldukça faydalı ücretsiz bir araç. Çok küçük boyuta sahip olan bu araç, yüklendikten hemen sonra Visual Studio’dan View -> Other Windows -> Package Manager Console sekmelerini takiben erişebiliniyor.
Açılan console’a Install-Package PaketAdı yazmanız 3.parti bir kütüphaneyi direkt seçmiş olduğunuz projeye eklemenizi sağlıyor.
NuGet Package Manager Resmi Adresi
Mayıs 3, 2011 at 01:09 · Kategori: .NET
Bitirme projemde rastladığım ihtiyaç doğrultusunda DataTextField’de birden fazla değeri birleştirerek göstermem gerekiyordu. İçerisinde aşağıdaki gibi Brand, Model, Name,Code ve Id bulanan bir Material tablosu olduğunu varsayalım. Yapmak istediğimiz şey, DataTextField kısmı için Brand, Name ve Model alanlarını birleştirerek tek bir alan gibi göstermek ve Code değerini de ilgili alanın değeri haline getirmek olacak.

/*
*persist kendi oluşturduğum bir datalayer objesi.
*persist nesnesinin içerisindeki dataset türünden değer döndüren
*returnDataSet isimli methodu kullandım.
*
*/
DataSet ds = persist.returnDataSet("SELECT * FROM Material");
ds.Tables[0].Columns.Add(new DataColumn("Product",
System.Type.GetType("System.String"),"Brand +', '+Name+' '+Model"));
ddlProductCode.DataSource = ds ;
// Yeni alanımızın adını Product olarak belirlemiştik
// Burada onu DataTextField'e atıyoruz
ddlProductCode.DataTextField = "Product";
// DropDownList'den seçim yapıldığında SelectedValue için göstereceği değer
ddlProductCode.DataValueField = "Code";
ddlProductCode.DataBind();
Sonuç:

Nisan 25, 2011 at 19:43 · Kategori: .NET
DropDownList’i herhangi bir veritabanından getirdiğiniz bir veri kaynağı ile doldurdunuz. Ancak kaynak haricinde varsayılan bir değerin listede seçili olmasını istiyorsunuz. Bunu yapabilmeniz için öncelikle bir ListItem nesnesi oluşturarak işe başlıyoruz.
ListItem defValue = new ListItem();
defValue.Text = 'Lütfen birini seçiniz!'; // Listede görünecek yazı
defValue.Value=''; // Görünen isme karşılık gelen değer *SelectedValue
defValue.Selected = true; // Bunun seçili olmasını sağlıyoruz.
ddlCompanies.Items.Add(defValue); // Daha sonra dropdownlist'e ekliyoruz.
Bunları yaptıktan sonra son olarak DropDownList’e AppendDataBoundItems=”true” özelliğini eklemeyi unutmamanız gerekiyor. Bu özellik sayesinde daha önce datayı bağlamış (bind) olsanız bile yeni liste elemanımızın eklenmesi sağlamış oluyoruz. Eğer bu özelliği eklemezsek, eklediğimiz ListItem listede görünmeyerek, yalnızca DataSource’un sahip olduğu elamanlar listelenecektir.
İyi çalışmalar,
Nisan 25, 2011 at 16:34 · Kategori: .NET, C#
Eğer Sql Server’da DateTime nesnesi ile uğraşıyorsanız, çoğu zaman string türünden bir ifadeyi DateTime formatına uygun bir şekle dönüştürmeniz gerekecektir. Yoksa formatın uygun olmadığına ( String was not recognized as a valid DateTime ) dair bir hata alacaksınız. Bu yöntemi try catch ile çözmekten ziyade basit bir if ile üstesinden gelmek daha verimli olacaktır.
DateTime dtime;
if (!DateTime.TryParse(txtInvoiceDate.Text, out dtime))
txtInvoiceDate.Text = DateTime.Today.ToShortDateString();
Artık dtime nesnesini istediğiniz yerde kullanabilirsiniz.
İyi çalışmalar