Kategori arşivi: ASP.NET

ASP.NET Web API 2’de İsteklere İzin Verme

Tarayıcı güvenliği için bir web sayfasıdan başka bir web sayfasına AJAX isteklerini engeller. Bu hassas verilerin korunmasını sağlar. Bazen de API çağrılarına izin vermek isteyebilirsiniz.

İzin vermek için W3C standartı olan CORS kullanırız. CORS bize istek yapanları, metodları ve headerları filtrelememize olanak verir.

Okumaya devam et

Visual Studio Projelerinde Yüklenen NuGet Paketlerin Farklı Sürüm Problemi

NuGet severek kullandığım bir extension ama solationa eklediğiniz projeler arasında yüklediğiniz paketler arasında versiyon uyumsuzluğu olabilir. Bir de çok n-layered bir mimariniz varsa gözden kaçanlar da olabilir. Gözünüzden kaçarsa output penceresinde aşağıdaki gibi bir hatayı görebilirsiniz.

C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Paketler arasındaki bu uyumsuzluğu düzeltmek için, NuGet gerekli önlemi unutmamış 🙂 Solution üzerinde NuGet Paket Yönetimine girdiğinizde 4. bir sekme göreceksiniz. Bütün projelerinizi tarayıp, uyumsuz olan paketleri size göstermektedir.

string Tipinde Gelen Türkçe Tarihi DateTime Tipine Çevirmek

Araştırmak neredeyse yarım günümü alan bir sorunumu sizlerle paylaşmak istedim.

Üstünde çalıştığım projede, string tipinde gelen ve de formatı “dd MM yyyy DD” tarihi DateTime tipine çevirmem gerekiyordu. Tipini değiştirmem için Parse fonksiyonunu kullanmam lazım ama tarihin culture bilgisi olmadan gelen tarihi algılaması mümkün olmuyor. Aşağıdaki gibi bir fonksiyon ile çözdüm.

public static DateTime StrLongDateToDateTime(string date)
            {
                DateTime dateTime = new DateTime();
#if DEBUG
                try
                {
#endif
                    if (!string.IsNullOrEmpty(date))
                    {
                        string myTime = DateTime.Parse(date).ToString(CultureInfo.GetCultureInfo("tr-TR").DateTimeFormat.ShortDatePattern);
                        dateTime = DateTime.Parse(myTime);
                    }
#if DEBUG
                }
                catch (Exception ex)
                {
                    Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
                }
#endif
                return dateTime;
            }

 

MVC Model’inde Nesneyi Validasyon Haricinde Tutmak

Model tasarımında nesnelerinizde validasyonu zorunlu tutabilirsiniz ama form işlemlerinde istediğiniz alanları ModelState Validate kontrolü haricinde tutmak istiyorsanız aşağıdaki örneği inceleyebilirsiniz.

ModelState.Remove("NESNE_ADI");

if (ModelState.IsValid)
{
// Prosedürler
}

ASP.NET MVC’de HTML5 data-* Attributes Kullanımı

MVC’de form controlleri eklerken HMTL5 attributes kullanmak isteyebilirsiniz ama data-* attributes’leri içindeki “-” aritmatik bir operatör olduğu için sayfanız hata verecektir. Proplemi aşmak için “_” çizgi kullanmanız yeterlidir.

Örnek:

@Html.TextBoxFor(model => model.MAIL, new { @class = "form-control", @placeholder = "mail@alanadi.com", @data_required = "email" })

ASP.NET MVC ile Post Edilen Html Kodları (ValidateInput)

MVC ile hazırladığımız sayfalarda CKEditör gibi zengin metin editörü kullanıyorsak, sayfamızı post ettiğimizde aşağıdaki gibi hata alabiliriz.

“[HttpRequestValidationException (0x80004005): A potentially dangerous Request.Form value was detected from the client…”

Bu hata aslında bir güvenlik önlemi olup, sayfada html ve js kodları yürütmeyi engellemektedir. Eğerki kontrol panelinizde kullanacaksanız metodunuzun üstüne [ValidateInput(false)] attribute belirtmeniz yeterli olacaktır.

MVC Model’deki Date Alanları Proplemi ve Çözümü

Sql Server’da oluşturduğunuz tablodaki date tipindeki alanlarının form kontrollerinde oluşan sorunu çözmek için aşağıdaki js kodunu kullanmanız yeterlidir.

$.validator.setDefaults({ ignore: '.ignore' });
$.validator.methods["date"] = function (value, element) { return true; };
$.validator.methods.range = function (value, element, param) {
var globalizedValue = value.replace(",", ".");
return this.optional(element) || (globalizedValue >= param[0] && globalizedValue <= param[1]);
};

$.validator.methods.number = function (value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:[\s\.,]\d{3})+)(?:[\.,]\d+)?$/.test(value);
};

Ayrıca eğer form elemanınızın kontrol edilmeden atlanmasını istiyorsanız class attribute “ignore” eklemeniz yeterlidir. Örnek

class="ignore"

ASP.NET Cookie Türkçe Karakter Proplemi ve Çözümü

Üzerinde çalıştığım projede session ile yaptığım kısımları cookie olarak değiştirmem gerekiyordu. Düzenlemeden sonra cookielerden gelen değerlerde türkçe karakter problemi olduğu gördüm. Bu sorunu UrlEncode ile çözebilirsiniz ama yazılım sürecini uzatıyor. web.config ile daha kolay bir şekilde çözüme ulaşabilirsiniz.