Projelerde kullandığım byte[] arrayi pdf olarak ekranda görüntüleyen kodu paylaşmak istiyorum.

Yazının tamamını oku »

Color sınıfının static FromName metodu ile asp.net kontrollerine dinamik olarak renk ataması yapılabilir. FromName metodunun dönüş tipi Color, tüm asp.net kontrollerinin renkle ilgili özellikleride Color tipinde referans kabul ettiğinden rahatça bu metodu kullanabiliriz.

Yazının tamamını oku »

Web uygulamalarında performans kadar önemli diğer şey ise güvenlik. Sistemimizi dışarıdan gelen ataklara karşı korumak için güvenlik açıklarının kapatılması gerekiyor. Web sitemizde güvenliğin arttırılması için yapılması gerekenlerden bazıları: 

Yazının tamamını oku »

Asp.net sayfasında asp kontrollerini html taglarının arasına yerleştiriyoruz. Code behindda; asp kontrollerine eriştiğimiz gibi bu  html taglarına da  ulaşmak ve özelliklerini değiştirmek mümkün. Bunun için ilgili kontrole runat=”server” yazıyoruz ve code behinde erişeceğimiz id değerini veriyoruz. Küçük bir örnekle göstereyim.

Yazının tamamını oku »

Projemde kullandığım bir kod. Paylaşmak istedim.Sayfamızda bir  checkbox ve bir textbox olduğunu düşünelim. Aşağıdaki javascript kod checkbox’a tıklandığında Textbox’ ı enable yapıyor ve tekrar checkbox tıklandığında Textbox’ı disable a çeviririyor. Bu sayede servera gitmeden bu işi clientta kolayca halletmiş oluyoruz.

Javascirpt getElementById  metodunu kullandığımda  id  değerine asp.net kontrolünün id değerini gönderdiğimde hem Visual Studio javascript hatası verdi hemde javascript fonksiyonu çalışmadı. Bunun için getElementById  metoduna asp.net kontrolünün ClientID değerini göndermek gerekiyor. Bu şekilde sorunsuz çalışıyor.

Yazının tamamını oku »

     Asp.net sayfamıza Toolbox dan aldığımız kontrolleri yerleştiriyor ve bunları kullanıyoruz. Ama bazı durumlarda kontrolleri dinamik olarak oluşturmak gerekiyor. Benim en çok dinamik kontrol oluşturduğum durumlar : Örneğin database de bir tablo var ve o tablodaki kayıtlar kadar checkbox  ya da kayıt sayısı kadar textbox ve label üretmem gerekiyor. Sayfadaki oluşacak kontrollerin sayısını önceden bilmiyorsam kontrolleri dinamik olarak üretiyorum. Bunun için kullandığım yöntem;

Bir html table nesnesini toolbox tan alıp sayfaya yerleştiriyorum. Daha sonra kod kısmında dinamik olarak row ,cell, kontrolleri oluşturup tabloya ekliyorum. Örnek için dinamik bir form oluşturan küçük bir uygulama yazdım. Kodlar ve oluşan dinamik form şu şekilde.

Yazının tamamını oku »

Bir Asp.net  sayfasında fck editör ya da onun gibi rich textbox editörler kullanıyorsak; Sayfa postback olduğunda text editördeki Html koddan dolayı şöyle bir hata alıyoruz.

“A potentially dangerous Request.Form value was detected from the client “

Bu hatayı çözmek için asp.net sayfasının Page kısmına  ValidateRequest=”false”  yazıyoruz. Tamamı şu şekilde.

<%@ Page Language=”C#” MasterPageFile=”~/ManagementMaster.master” AutoEventWireup=”true” CodeFile=”EditAudiContent.aspx.cs” Inherits=”Management_EditAudiContent” ValidateRequest=”false”   %>

 Aslında bunu yapmak güvenlik açısından doğru değil ama sayfadan html kod göndermenin başka bir yolunu bulamadım. İleride çözüm bulursam burada yazacağım.

Bir web servisten birden fazla değer dödürmek istiyorsak şöyle bir yöntem kullanabiliriz. Döndürmek istediğimiz alanları bir classın propertyleri yaparız ve web metoddan o classın referansını göndeririz. Örneğimizde web metod eğer bir hata oluşursa hata mesajı, herhangi bir hata oluşmazsa bir dataset döndürecek. Kodları şu şekilde.

Öncelikle projede AppCode da WebServiceResult adında bir class oluşturdum.

public class WebServiceResult
{
       private string _errorMessage;
       private DataSet _ds;

       public string ErrorMessage
       {
           get { return _errorMessage; }
           set { _errorMessage = value; }
       }
       public DataSet DataSet
       {
           get { return _ds; }
           set { _ds = value; }
       }
}

Web metodda şu şekilde :

public class Service : System.Web.Services.WebService
{
    WebServiceResult webServiceResult = null;

    [WebMethod(Description = "Birden fazla değeri bir nesneyle döndüren method.")]
    public WebServiceResult    MultipleReturnValueMethod()
    {
        webServiceResult = new WebServiceResult();
        SqlConnection conn = null;
        SqlCommand command = null;
        SqlDataReader dr = null;
        DataTable dt = null;
        DataSet ds = null;

        try
        {
            //Bir sql bağlantısı oluştur.
            conn = new SqlConnection();
            //Connection stringi web configten al.
            conn.ConnectionString = System.Configuration.ConfigurationManager.AppSettings["ConnString"];
            //Bağlantıyı aç
            conn.Open();
            //Bir command oluştur.
            command = new SqlCommand();
            command.Connection = conn;
            //command.CommandText = “Select * from Tbl_User”;
            command.CommandText = “Select * from dbo.TableUsers”;
            dr = command.ExecuteReader();
            dt = new DataTable();
            dt.Load(dr);

            ds = new DataSet();
            ds.Tables.Add(dt);
           
            //Veritabanından çektiğimiz verileri gönder.
            webServiceResult.DataSet = ds;

        }
        catch (Exception ex)
        {
            webServiceResult.ErrorMessage = “Bir hata oluştu”;

        }
        finally
        {
            if (conn != null)
            {
                conn.Close(); conn.Dispose();  conn = null;
            }
            if (command != null) command = null;
            if (dr != null)
            {
                dr.Close(); dr = null;
            }
            if (ds != null) ds = null;    
        }
        return webServiceResult;
    }
   
}

WebServiceResult nesnesiyle datasetimizi ve hata mesajımızı döndürmüş oluyoruz.

Bu en basit şekilde yapılmış  bir örnek. Veritabanı bağlantısı için bir class yapılabilir. Ayrıca hata oluştuğunda loglama yapılmasını sağlayan bir mekanizma olabilir.

Yeni gözdelerimden biri Ajax Toolkitte bulunan ValidatorCalloutExtender kontrolü. Kullanımı çok kolay. Tek yapmak gereken sayfaya sürüklemek ve hangi validation kontrolünü kullanacaksa onu hedef olarak göstermek. Sayfadaki görünümü de çok güzel, aynı zamanda kullanıcıları uyarmak için validationSummary’ e göre daha dikkat çekici olduğunu düşünüyorum. Eee bide clientside daha ne olsun. Kullanımı ve görüntüsü şu şekilde:

<asp:TextBox ID=”txtEmail” runat=”server”   MaxLength=”100″></asp:TextBox>

<asp:RequiredFieldValidator ID=”RequiredFieldValidator1″ runat=”server” ControlToValidate=”txtEmail”
ErrorMessage=”Lütfen E-Posta alanını boş bırakmayınız.” ValidationGroup=”Login” ForeColor=”White”>*</asp:RequiredFieldValidator>

<cc1:ValidatorCalloutExtender ID=”ValidatorCalloutExtender1″ runat=”server” TargetControlID=”RequiredFieldValidator1″ HighlightCssClass=”txtCss”>

 

Sayfadaki  kullanıcı adı ve şifre alanlarını doldurmadan giriş yapılmasına izin vermiyor. Bunun için RequiredFieldValidator kullandım. ErrorMessage larına gösterilecek hata mesajını yazıyoruz. Text alanına *. Kontrolün ForeColorını sayfa ile aynı yapınki sayfada requiredFieldValidator görünmesin. Böyle daha şık oluyor. ValidatorCalloutExtender kontolünün TargetControlID alanına kontrol ettiği requiredFieldvalidatorun Id sini yazıyoruz. HighlightCssClass alanı ise  validatorcallout aktif olduğunda kontrol ettiği kontrolde görüntülenecek css oluyor.

 

Projemde kullandığım ve faydalı olabilecek bir kodu paylaşmak istiyorum. Senaryo şöyle;  sayfada 2 tane imaj buton var ve bu butonların üzerine gelindiğinde veritabanından gelen açıklamalar sayfanın belli bir bölgesinde gösteriliyor.

Böyle bir şeyi server-side da yapmak mümkün değil. Onun için öncelikle tabiki yardımcımız ajax toolkite başvurdum, bana yardımcı olacak bir kontrol aradım ama bulamadım. Bu durumda yardımıma javascript koştu.

İki tane javascript function yazdım bunları masterpage’ e  yerleştirdim. Masterpage kullanmıyorsanız functionları çağırılacakları sayfaya yazabilirsiniz. daha sonra server-side da butonların mouseover (Mouse butonların üzerine geldiğinde event gerçekleştiğinden bu olayı kullanıyoruz. ) attributeslerine bu functionları ekledim. Hepsi bu kadar. Kodlar şu şekilde:

Masterpage:

<head runat=”server”>
    <title>Javascript Deneme</title>    
      <script language=”javascript” type=”text/jscript”>
function Bind(text)
{
document.getElementById(’myText’).firstChild.data = text;
return true;
}
function UnBind(text)
{
document.getElementById(’myText’).firstChild.data = text;
return true;

}

</script>
</head>

<body><span id=”myText”>some text</span></body>

Code :

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Button1.Attributes.Add(”onmouseover”,”javascript:Bind(’db’den gelen veri 1′)”);
            Button1.Attributes.Add(”onmouseout”, “javascript:UnBind(”)”);
            Button2.Attributes.Add(”onmouseover”, “javascript:Bind(’db’den gelen veri 1′)”);
            Button2.Attributes.Add(”onmouseout”, “javascript:UnBind(”)”);
        }
    } 

bu arada örneğin sayfada bir butona bastığınızda javascript çalıştırmak istiyorsanız mouseover yerine onclick eventini kullanabilirsiniz. Yukarıdaki örnek aynı zamanda javascriptin server-side da kontrollere eklenmesidir.


© 2007 Eliffff@EL-IF | iKon Wordpress Teması | Blog Alt Yapısı WordPress Tr | WpArşiv