sy:UIControl

UI Kontrolü belli bir hedefe veya hedeflere otomatik HTML nesneleri oluşturur ve bu nesneleri kayıt eklerken, düzenlerken işlerinizi kolaylaştıracak bir kontroldür. 12 özellik almaktadır bu özellikleri kullanarak dinamik form oluşturabilirsiniz formu oluşturmak için bir tablonun sınıf örneğinde UIController annotation özelliklerini almalıdır.

sy:UIControl Özellikleri:

DataSource (*) Tablonun sınıf örneğinin yolunu belirler. {ProjeAdi}.Model.{Tablo}.cs
Class UIControl'ün sınıf adını belirler.
Action (*) Formun hangi adrese gönderileceği adres veya javascript fonksiyonu.
Method (*) Hangi yöntemle gönderileceğini belirlenir. (POST/GET)
SubmitButton Gönder butonun form'a eklenmesini belirler. (true/false)
SubmitButtonValue Gönder butonun içindeki değeri belirler.
ResetButton Sıfırla butonun form'a eklenmesini belirler. (true/false)
ResetButtonValue Sıfırla butonun içindeki değeri belirler.
ResetButtonClass Sıfırla butonun sınıfını belirler.
SubmitButtonClass Gönder butonun sınıfını belirler.
Section (*) Tablodaki alanların hedef ismi belirlenir. (UIController ile aynı olmak zorundadır.)
SQL Formun içindeki alanların dinamik olarak doldurulmasını belirler bu özellik boş geçilebilir.
SQLparams Sql cümlesindeki parametreler ayarlanır.

UIController Annotation Özellikleri:

Type Sections Required Class Label DefaultValue MaxLength PlaceHolder SQL SQLParams DisplayValue Value
HIDDEN String Boolean - - - - - - - -
CHECKBOX, FILEUPLOAD String Boolean String String String            
TEXTBOX, PASSWORD, TEXTAREA String Boolean String String - int String - - -
SELECT String Boolean String String -     String String String

Model Hazırlama (Model/Haberler.cs)

    public class Haberler
    {
        [Column("Identity")]
        [UIController(Objects.Type.HIDDEN, "Haber Düzenle", false)]
        public int pkID { get; set; }
        [UIController(Objects.Type.TEXTBOX, "Haber Ekle, Haber Düzenle", true, "form-control", "Haber Başlığı", 50, "")]
        public string Baslik { get; set; }
        [UIController(Objects.Type.TEXTAREA, "Haber Ekle, Haber Düzenle", true, "form-control", "Haber İçeriği", 255, "")]
        public string Icerik { get; set; }
        [UIController(Objects.Type.SELECT, "Haber Ekle, Haber Düzenle", true, "select", "Yazarı", "Select * from Uyeler", "ADSOYAD", "UYEID")]
        public int Yazar { get; set; }
        [UIController(Objects.Type.TEXTBOX, "Haber Ekle, Haber Düzenle", true, "form-control", "Anahtar Kelimeler", 100, "virgül ile ayırın")]
        public String AnahtarKelimeler { get; set; }
        private DateTime Tarih { get; set; }
        [UIController(Objects.Type.CHECKBOX, "Haber Ekle, Haber Düzenle", false, "", "Onaylı Gönderi", "true")]
        public Boolean Onayli { get; set; }
    }

UIControl'ü sayfada kullanma:

 <sy:UIControl ID="UIControl3" runat="server" DataSource="SelahattinCS2015.Model.Haberler"
     Class="col-md-6 col-lg-6 col-xs-6" Action="javascript:haberIslem('yeni');"
     Method="POST" SubmitButton="true"
     SubmitButtonValue="Haber Ekle" ResetButton="true" ResetButtonValue="Temizle"
     ResetButtonClass="btn btn-danger"
     SubmitButtonClass="btn btn-default" Section="Haber Ekle">
 </sy:UIControl>

Bu kontrolü dinamik doldurmak için SQL özelliğini Form_Load olayında kullanabilirsiniz.

protected void Page_Load(object sender, EventArgs e)
{
  String hbr = "SELECT * FROM Haberler WHERE pkID=@pkID";
  UIControl2.SQL = hbr; //dinamik doldurma işlemi
  UIControl2.SQLParams[0] = Request.QueryString["haber_id"];
}

Bu kontroller tasarlamak için web konsolundan sy.UIEditor(Control Adı); fonksiyonu çağırlır bu fonksiyon string tipinde contoller ID'sini istenir.

UIEditor:

Tasarım dosyaları projenizin kök (root) dizininde Layouts/{ControlAdı}.json JSON tipte dosyalarda tutulur bu dosyalar sayfa yüklendiğinde otomatik olarak okunur eğer AJAX ile bir sayfayı yüklüyorsanız sy.UILoad(Control Adı); sayfa yükleme tamamlandığında çağırılması gerekiyor eğer bu fonksiyon çağırılmazsa  tasarımlarınız düzgün gözükmeyecektir.

ÖNEMLİ: Tasarım dosyalarını kaydetmek ve düzenlemek için Layouts klasörünün kök dizinde olması gerekiyor ayrıca okuma ve yazma izinlerinin verilmesi gerekiyor. Bu özellik sadece UIControl tagında çalışır ve görüntülenir.

UIController.getUI Kullanımı:

Eğer tag olarak kullanmak istemiyorsanız ASP.NET'in herhangi bir nesnesinde ya da server tarafında desteklenen bir nesneye doldurmak istiyorsanız UIController.getUI(type, string, string); methodu çağırabilirsiniz. Bu method geri html string döndürür.

tablo (*) Type tipinde tablonun sınıf yolu istenir.
sql Eğer controller doldurulmak isteniyorsa bu değişken girilir.
section (*) Hangi hedeflerden nesneler form'a eklenecek string tipinde adı istenir.

Örnek Kullanımı:

protected void Page_Load(object sender, EventArgs e)
{
  uyegirisi.InnerHtml = UIController.getUI(typeof(Model.Uyeler), "", "Kısa Giriş", param1, param2, ...);
}

 

forwardKonunun Tamamını Gör