folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder Asp.Net Mvc Formcollection Hakkında



Asp.Net Mvc Formcollection Hakkında

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Marslan
    Marslan's avatar
    Kayıt Tarihi: 31/Ağustos/2012
    Erkek

    çünkü ekranda herhangi bir şekilde bunun karşılığı yok ekranda ne varsa form sana post ederken sadece onları post eder ya mevcutta bir nesneyi değişkende tut yada ekrana o görüntülemek istemediğin değerleri hidden field ile yazdır ki form sana tekrar objeyi dönerken o değerleri verebilsin


    ...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    LuCiFeR
    LuCiFeR's avatar
    Kayıt Tarihi: 25/Eylül/2005
    Erkek

    Aynen abi bende onu diyorum :) bunu peki en doğru şekilde nere tutabilirim manipule edilmesini istemediğim alanlar session harici pekte bir olanak yok herhalde.

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    erc
    erc's avatar
    Kayıt Tarihi: 23/Aralık/2010
    Erkek

    ajax kullan ?

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Marslan
    Marslan's avatar
    Kayıt Tarihi: 31/Ağustos/2012
    Erkek

    genel olarak kullanılan yöntem veritabanında ki bir obje ise tekrardan veriyi veri tabanından çekip kullanmandır. yok veri tabanına kaydetmeyeceğin geçici bir verisi ise global bir değişken tanımlayıp o değişken üzerinde saklayabilirsin oda olmadı cache e atabilirsin. hidden field üzerinde tutarsan veri client tarafında değiştirilip post edilebilir veya bozulabilir, riskli bir veri ise hiç bu yönteme başvurma ama bir önceki sayfada yine kullanıcıdan aldığın senin için herhangi birşey değiştirmeyecek bir veri ise bu yöntemi tercih edebilirsin daha kullanışlı ve anlamlı olur. Bu tip işlemler için session pek tercih edilmez. viewbag türevi kullanımlarda tek taraflıdır, action methoda veri dönmezler. 


    ...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    LuCiFeR
    LuCiFeR's avatar
    Kayıt Tarihi: 25/Eylül/2005
    Erkek

    Ne farkedecek ki o zaman hocam ? O parametrelerde gidecekmi gidecekse manipule edilebilir olacaktır diye düşünüyorum. ?

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    trampfd
    trampfd's avatar
    Kayıt Tarihi: 10/Mayıs/2006
    Erkek
    LuCiFeR bunu yazdı

    Aşağıdakilerden bold olanları ekrana    @Html.TextBoxFor(q => q.Rooms[i].Passangers[iAdult].Passport) şeklinde yazdırıyorum

    ama ekrana yazdırmadıgım yani html çıktısını almadıgım Total ve HotelId gibi değerler post edilince controllerda null görünüyor.

       

      public List RoomInfo { get; set; }

           public List Rooms { get; set; }

           public decimal Total { get; set; }

           public int HotelId { get; set; }

     

    Mantıken ekranda olmayan alanlar, postlanınca da null olarak döner. Bunun önüne geçmek için o alanları formda (eğer güvenli ise) Html.HiddenFor içinde tutabilirsin, geri postlandığında tüm objen dolu gelir.

    Bu şekilde yapmayacaksan da, o zaman sadece ilgili alanları okursun aldığın nesneden, viewdaki formda kullanmadığın alanlar null olacağından onları kullanmazsın.


    Ehl-i Byte
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    LuCiFeR
    LuCiFeR's avatar
    Kayıt Tarihi: 25/Eylül/2005
    Erkek
    Marslan bunu yazdı

    genel olarak kullanılan yöntem veritabanında ki bir obje ise tekrardan veriyi veri tabanından çekip kullanmandır. yok veri tabanına kaydetmeyeceğin geçici bir verisi ise global bir değişken tanımlayıp o değişken üzerinde saklayabilirsin oda olmadı cache e atabilirsin. hidden field üzerinde tutarsan veri client tarafında değiştirilip post edilebilir veya bozulabilir, riskli bir veri ise hiç bu yönteme başvurma ama bir önceki sayfada yine kullanıcıdan aldığın senin için herhangi birşey değiştirmeyecek bir veri ise bu yöntemi tercih edebilirsin daha kullanışlı ve anlamlı olur. Bu tip işlemler için session pek tercih edilmez. viewbag türevi kullanımlarda tek taraflıdır, action methoda veri dönmezler. 

    Evet önemli bir veri abi değiştirilmesini istemiyorum tutarı saklayacagım cunku orada, global değişken hiç kullanmadım cachede öyle bunlar bu tarz durumlar için kullanılan kabul görmüş metodlarmıdır hocam yani bu ve benzeri işlemlerde bunlardan mı yararlanılır ?

    Edit : Global derken static class larımı diyorsun abi eğer öyleyse ben her oturum / ziyaretçi için benzersiz ayrı tutulmasını istiyorum o yuzden o olmaz sanırım yada nasıl yapılır çok fikir yürütemedim.

    LuCiFeR tarafından 18/Ara/14 15:41 tarihinde düzenlenmiştir
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Marslan
    Marslan's avatar
    Kayıt Tarihi: 31/Ağustos/2012
    Erkek

    kabul görmüş bir yöntem mi ? tartışılır bu kişiye düşünce tarzına veya kullandığınız yapıya göre kaynaklarınıza göre değişir. ben kendi adıma yorum yapacak olursam bu tip işlemler için session kullanmıyoruz özellikle çok kullanıcı sistemlerde böyle herşeyi sessiona atarsan session şişebiliyor(bu konuda yaşadığım acı tecrübeler var). Ayrıca aynı kullanıcı iki farklı ekranda iki farklı kişi için aynı işlemi yapıyorsa session üzerinde bu çakışmanın kontrolünü yapman gerekir ki bu işlerini iyice karıştırır.

    sizin işleme gelirsek

    1. tutar eğer netleşmiş bir tutar ise veri tabanına kaydedin bir daha ki sefere işlem yapacağınız zaman veri tabanından çekin (Örn: müşteri işlemleri tamamlanmış bir sonraki ekranda fiyatı etkileyecek bir değişiklik olmayacak tutar hakkında gerekli onaylar alınmış ise veri tabanına kaydedin. )

    2. controller içerisinde global değişken tanımlayın action işleminde ihtiyaç duyduğunuz yerde veriyi buradan alıp kullanın controller istek karşılığında oluşturulduğu için başka sayfa başka işlem yapsada çakışma olmaz yanlız burada sayfayı yeniden handle edersen veriyi kaybedersin buna dikkat etmelisin

    3. cache yöntemi ile veriyi tutmak için cache işlemide komple sunucu üzerinde olup herkesin erişebildiği bir işlemdir. örn sen "tutar" parametresi ile birşey sakladığın zaman bunu tüm kullanıcıların işlemlerinde okuyabilirsin veya üzerine veri yazabilirsin bunun içinde session ve işlem bilgilerini içerecek (örn : sessionId + müsteriAdi +parametre gibi) şekilde key belirlemen gerekir.

    4. session üzerinde tutmak istersen de bir kullanıcı için bir tek session olur sessionda bir key ile bir değer kaydedersen bütün açtığı sayfalarda o kullanıcı o değeri görür yani aynı anda aynı işlemi iki farklı kişi için yapamaz anlamına geliyor. bunun içinde cache için olduğu gibi islemBazlı bir key (örn : müsteriAdi +parametre gibi)  kullanman gerekir ve işlem bitiminde bu keyi temizlemen gerekir çünkü sessionda cache gibi zaman aşımı olayı yok kullanıcı oturumu kapanana kadar o veri orada kalır ve uzun süreli işlemlerde session şişer.

    5. en basit çözüm olarak veriyi kendine özgü bir şifreleme algoritması ile veya herhangi bir geri dönüşümlü algoritma ile(.Net kütüphanelerinde var araştırırsan bulursun) şifreleyip hidden field içerisinde sayfaya gönderebilirsin tekrar veriyi aldığında şifresini çözer kullanırsın(bu tip işlemler için bu yöntem çok tercih edilir). 

    Not :  ücret ile alakalı işlemlerde en çok kullanılan ve en garanti yöntem işlemler bitip veri tabanına kaydedilirken parametreler ile tekrar ücret hesaplaması yapmandır.

    senin işlemin için 5. yöntem bence en basit ve kullanışlı yöntem olur. yine de seçim sana kalmış


    ...
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    LuCiFeR
    LuCiFeR's avatar
    Kayıt Tarihi: 25/Eylül/2005
    Erkek

    Hocam ilgin için çok teşekkürler zahmet edip uzun uzun yazmışsın.

    Seneryom şu şekilde sisteme kullanıcı üye olarakda olmadanda alışveriş yapabiliyor, oyuzden alacagım bir referans Id yok,

    db den almak konusundada şöyle bir düşüncem var post edilmeden önce bir guid referansıyla bunu db e kaydetmek ancak buradada işlem siparişe dönüşmez ise bunu yakalamak lazım.

     

    2. madde de ki controllar değişkeninin çalışma prensibi konusunda bir sorum olacak eğer ben controllerda değişkeni tanımlarsam aynı anda o controllerde işlem yapan başka oturumlarda bu değişken set olur mu yani o değişken sadece o oturuma mı aittir ?

     

    Benim istediğim tutar verisini db e kaydetmeden her oturum için ayrı ayrı tutabilmek ve sonra bu veriyi okuyabilmek. 

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Marslan
    Marslan's avatar
    Kayıt Tarihi: 31/Ağustos/2012
    Erkek

    controller bütün kullanıcılar değil session bile değil istek başına oluşturulan bir nesnedir. Hatta istek yapan kişi isteğini yenilemek için sayfayı yenilese değerleri kaybeder o yüzden dedim dikkat etmen gerekir isteği yeniden oluşturup handle etmen verinin kaybolmasına sebep olur.


    ...
Toplam Hit: 2205 Toplam Mesaj: 23