Asp.NET MVC etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Asp.NET MVC etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

23 Şubat 2017 Perşembe

File upload using MVC 4 with Ajax

ere is my small working sample, which uploads multiple files and uploads in a folder called as 'junk'
Client Side....
    <html>
    <head>
    <title>Upload Example</title>
    <script src="~/Scripts/jquery-2.1.0.intellisense.js"></script>
    <script src="~/Scripts/jquery-2.1.0.js"></script>
    <script src="~/Scripts/jquery-2.1.0.min.js"></script>
    <script>
    $(document).ready(function () {
        $("#Upload").click(function () {
            var formData = new FormData();
            var totalFiles = document.getElementById("FileUpload").files.length;
            for (var i = 0; i < totalFiles; i++)
            {
                var file = document.getElementById("FileUpload").files[i];

                formData.append("FileUpload", file);
            }
            $.ajax({
                type: "POST",
                url: '/Home/Upload',
                data: formData,
                dataType: 'json',
                contentType: false,
                processData: false,
                success: function (response) {
                    alert('succes!!');
                },
                error: function (error) {
                    alert("errror");
                }
            });
        });
    });

</script>
</head>
<body>
    <input type="file" id="FileUpload" multiple />
    <input type="button" id="Upload" value="Upload" />
</body>
</html>
Server Side....
public class HomeController : Controller
{
    [HttpPost]
    public void Upload( )
    {
        for( int i = 0 ; i < Request.Files.Count ; i++ )
        {
            var file = Request.Files[i];

            var fileName = Path.GetFileName( file.FileName );

            var path = Path.Combine( Server.MapPath( "~/Junk/" ) , fileName );
            file.SaveAs( path );    
        }

    }
}

15 Şubat 2017 Çarşamba

asp net mvc - datetime sorunu

protected void Application_PreRequestHandlerExecute()
        {
            var currentCulture = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
            currentCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
            currentCulture.DateTimeFormat.DateSeparator = "/";
            Thread.CurrentThread.CurrentCulture = currentCulture;
            Thread.CurrentThread.CurrentUICulture = currentCulture;
        }

19 Ocak 2016 Salı

ASP.NET MVC 4 Ajax.BeginForm ve File Upload

Ajax.BeginForm dosya yüklemeyi desteklemiyor

Html.Partial, Html.RenderPartial, Html.Action, Html.RenderAction aralarındaki farklar nelerdir?

Html.Partial metodu
Html.Partial metodu, partial view'i Html-encoded string olarak çözümler. Html.Partial metodunun çıktısı string türünde değer döndürdüğü için değişkende saklanabilir.
Kullanımı kolaydır ve Action oluşturmaya gerek yoktur.
Html.Partial metodu, sayfada görüntülemek istediğiniz veriler metodun çağırıldığı view ile birlikte geliyorsa kullanışlıdır. Örneğin, bir blog yazısında yorumları göstermek için Html.Partial metodu kullanılmalıdır çünkü blog yazısının yorumları, yazıyla birlikte ViewModel'in içerisinde gelmiş olacaktır.
Kullanım örneği:
@Html.Partial("_Yorumlar")

Html.RenderPartial metodu
Html.RenderPartial metodu, çağırıldığı sayfanın TextWriter'ını kullanır. Yani doğrudan Http response stream'e yazılır. Bu yüzden Html.Partial metodundan daha hızlıdır.
Html.RenderPartial metodu void döndürür. Kullanımı kolaydır ve Action oluşturmaya gerek yoktur.
Html.RenderPartial metodu, sayfada görüntülemek istediğiniz veriler metodu çağırdığınız View ile birlikte geliyorsa kullanışlıdır. Örneğin, bir blog yazısında yorumları göstermek için Html.RenderPartial metodu kullanılmalıdır çünkü blog yazısının yorumları, yazıyla birlikte ViewModel'in içerisinde gelmiş olacaktır.
Kullanım örneği:
@{Html.RenderPartial("_Yorumlar");}

Html.Action metodu
Html.Action metodu, partial view'i Html-encoded string olarak çözümler.
Html.Action metodunda, partial view'i yorumlamak için "child action" oluşturmamız gerekir. Html.Action metodunun çıktısı string türünde değer döndürdüğü için değişkende saklanabilir.
Html.Action metodu, sayfada görüntülemek istediğiniz veriler metodun çağırıldığı view'dan bağımsız ise kullanışlıdır. Örneğin, bir blog yazısında her sayfada kategori listesini göstermek istiyorsak Html.Action metodu kullanılmalıdır çünkü kategori listesinin modeli diğerlerinden farklı olacaktır.
Kullanım örneği:
@{Html.Action("Kategori","Home");}
Ayrıca partial view'i önbellekte tutmak istiyorsanız Html.Action metodu en iyi çözüm olacaktır.

Html.RenderAction metodu
Html.RenderAction metodu, çağırıldığı sayfanın TextWriter'ını kullanır. Yani doğrudan Http response stream'e yazılır. Bu yüzden Html.Action metodundan daha hızlıdır.
Html.RenderAction metodunda, partial view'i yorumlamak için "child action" oluşturmamız gerekir.
Html.RenderAction metodu, sayfada görüntülemek istediğiniz veriler metodun çağırıldığı view'dan bağımsız ise kullanışlıdır. Örneğin, bir blog yazısında her sayfada kategori listesini göstermek istiyorsak Html.RenderAction metodu kullanılmalıdır çünkü kategori listesinin modeli diğerlerinden farklı olacaktır.
Kullanım örneği:
@{Html.RenderAction("Kategori", "Home");}
Partial view'i önbellekte tutmak istiyorsanız Html.RenderAction metodu en iyi çözüm olacaktır.

17 Ocak 2016 Pazar

Mapping AjaxOptions to attributes

Mapping AjaxOptions to attributes

The following table lists the mapping from AjaxOptions members to the HTML 5 data attributes:
AjaxOptions HTML attribute
Confirm data-ajax-confirm
HttpMethod data-ajax-method
InsertionMode data-ajax-mode *
LoadingElementDuration data-ajax-loading-duration **
LoadingElementId data-ajax-loading
OnBegin data-ajax-begin
OnComplete data-ajax-complete
OnFailure data-ajax-failure
OnSuccess data-ajax-success
UpdateTargetId data-ajax-update
Url data-ajax-url
In addition to these attributes, there will always be a data-ajax="true" attribute present to trigger the unobtrusive Ajax system.
* = data-ajax-mode will only be present if UpdateTargetId is set.
** = data-ajax-loading-duration will only be present if LoadingElementId is set.


<form action="/Controller/Action" data-ajax="true" data-ajax-failure="" data-ajax-mode="before" data-ajax-success="" data-ajax-update="#elementId" id="formId" method="post"></form>

<a  data-ajax="true" data-ajax-complete="" data-ajax-method="Post" data-ajax-mode="replace" data-ajax-update="#elementId" data-ajax-success="" data-ajax-failure=""> </a>

16 Ocak 2016 Cumartesi

action ve controller listesi

            Assembly asm = Assembly.GetAssembly(typeof(Project.Web.MvcApplication));

            var controlleractionlist = asm.GetTypes()
                    .Where(type => typeof(System.Web.Mvc.Controller).IsAssignableFrom(type))
                    .SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public))
                    .Where(m => !m.GetCustomAttributes(typeof(System.Runtime.CompilerServices.CompilerGeneratedAttribute), true).Any())
                    .Select(x => new { Controller = x.DeclaringType.Name, Action = x.Name, ReturnType = x.ReturnType.Name, Attributes = System.String.Join(",", x.GetCustomAttributes().Select(a => a.GetType().Name.Replace("Attribute", ""))) })
                    .OrderBy(x => x.Controller).ThenBy(x => x.Action).ToList();

16 Ekim 2015 Cuma

Asp.net MVC yapılmaması gerekenler

Yapmamız gerekenler
Controller -> Action içinde tek servisten verileri getirmeliyiz
İsimlendirme notasyonlarını düzgün yapmak gerekiyor. Daha sonra anlayabilmemiz için
Farklı katmanlar olması en azından c# için dll dosyalarını parçalamamızı sağlıyor. Ayrı ayrı build hata var mı diye kontrol edebiliriz.
Servis metotlarında ekleme işlemi, silme (bool), güncelleme işlemlerinde geriye nesnenin "id" değeri dönmesi gerekir.
Servis metotlarında kökten silme işlemlerinde geriye bool "true" veya "false" değerleri içeren bir nesne dönmesi lazım.
İç içe bağlılık gereken partiallar çağırılıyorsa bunlar Html.Action kullanmamız daha iyi olur çünkü partiallar arasında bağımlılığı azaltır. Sadece id'değeri yeter
PartialView'ler belli html etiketleri döndürüyorsa isimlendirmeyi ve dosyalamayı ona göre yapmalısın örneğin Views/Shared/FormElements/_Select.cshtml  içine model olarak Model katmanından bir model eklemeliyiz.
Html.Partial'a içine model gitmeyen şeyler için yapılmalı


Yapmamamız gerekenler
Partial içinde partial çağırırken derinlik 1'i geçmemeli.
Class modellerinde iç içe gereklilik gerektiren başka classların kullanılmamalı.
Modellerde ortak tablo kullanma çabasına girmeye gerek yok. Her alanın tablosu ayrı olması hem okunabilirliği artıyor hem kod yazarken karmaşayı azaltıyor.
EF'de 1 veri gereken yerde [model].FirstOrDefault()  yazıyorsak bir sıkıntı vardır, tablo ilişkisi çoktan çoka (many-to-many) değil, birden çoka(one-to-many) olması gerekiyor.

25 Mayıs 2015 Pazartesi

Autocomplete jquery

<link href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" rel="stylesheet"></link>
    <script src="~/Scripts/jquery-ui.js"></script>

    <script>
    $(function () {
        var availableTags = JSON.parse('@Html.Raw(ViewBag.ReasonKey)');
        $("#Reason").autocomplete({
            source: availableTags
        });
    });
    </script>

9 Mayıs 2015 Cumartesi

Global.asax metotları

1
2
3
4
protected void Application_Start(object sender, EventArgs e)
       {
       }
Uygulama ilk başlatıldığı anda çağrılır. IIS in başlamasından sonra kullanıcıya gelen ilk istekte gelir. Loglama(data akışını takip)için oldukça uygun bir eventtir. Uygulama kapanıncaya kadar çalışır.
1
2
3
4
protected void Application_End(object sender, EventArgs e)
 {
 }
Uygulama sona erdiğinde çalışır. Application_Start ta tanımladığımız fonksiyonları burada sonlandırabiliriz.
1
2
3
4
protected void Application_Error(object sender, EventArgs e)
 {
}
Uygulamanın çalışırken hataları görebileceğimiz bir alandır. Hata yönetimi konusunda bir çok fayda sağlar.
1
2
3
4
protected void Application_BeginRequest(object sender, EventArgs e)
 {
}
Projemizde bulunan herhangi bir sayfadan istek çağrıldığında tetiklenen eventtir.
1
2
3
4
protected void Application_AuthenticateRequest(object sender, EventArgs e)
 {
}
Bir FormsAuthentication kullanılması durumunda kullanıcı sisteme başarılı bir şekilde giriş yaptığında tetiklenen eventtir. Bu sayede kullanıcı herhangi bir sayfaya yönlendirilebilir, rol atanabilir veya bilgisayarına cookie bırakılabilir.
1
2
3
4
protected void Session_Start(object sender, EventArgs e)
 {
}
Sitemizde bulunan herhangi bir sayfayı kullanıcı ziyaret ettiğinde çağrılır. İlk sayfa isteğinde çağrılır ve daha sonra çağrılmaz. Fakat sessionun timeout süresi dolmuşsa ve kullanıcı bu süreden sonra tekrar bir istekte bulunursa yeni kullanıcı gibi davranılıp bu event tekrar tetiklenir. Kullanıcınının siteyi ilk ziyareti sırasında yazılacak fonksiyonlar burada bulunur. Online kullanıcı sayısı gibi
1
2
3
protected void Session_End(object sender, EventArgs e)
 {
}
Kullanıcının timeout olması durumunda bu event tetiklenir. Yukarıda yazılan bir çok fonksiyonla ilgili işlem burada yapılabilir. Online kullanıcının siteden çıkması vb. Bu yazımızda ASP.net in bize oldukça kolaylık sağladığı bir dosyayı inceledik. Böylelikle uygulama bazlı işlemlerde bize ne gibi kolaylıklar yapabileceğini gördük.

.net 6 mapget kullanımı

 app.UseEndpoints(endpoints => {     endpoints.MapGet("/", async context =>     {         var response = JsonConvert.Seriali...