Arkadaşlar merhaba, PartialView ı sayfa yenilenmeden yüklemek istiyorum ancak yapamadım. Kodlar şu şekilde,

    <script type="text/javascript">

$("#btnSave").click(function () {
    $.ajax({
        type: 'get',
        dataType: 'html',
        url: 'Url.Action("Save","Home")',
        success: function (data) {
            $("#Detay").html(data);
        },
        error: function () {

        }
    });
});
</script>

Controller da kod şu şekilde ,

[HttpGet]
        public ActionResult Save()
        {
            return PartialView("Save", new Student());
        }

View:

<input id="btnGetir" value="Getir" type="submit" />
<div id="StudentList"></div>
<div id="Detay"></div>
<p>
    @Html.ActionLink("Yeni Ekle", "Save", new{ id="btnSave" })
</p>

Cevaplarınızı bekliyorum.

soruldu: 12 Şub '14, 04:35

emax_64's gravatar image

emax_64
64589102101
cevap kabul oranı: 20%

değiştirildi: 12 Şub '14, 06:14

Hata nedir? hata mesajı? Save.cshtml kodları? Save.cshtml yi cağırdıgınız, diğer view sayfasındaki kodlar? Tarayıcı geliştirici araçlarını kullanarak hata mesajını yakalayıp, mesajı yazarsanız, daha acıklayıcı olur.

(12 Şub '14, 05:18) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

örneğin chrome için, f12 ile console u acıp oradaki hata mesajı varsa yazarsanız, daha net cevap alırsınız.

(12 Şub '14, 05:19) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Eğer başka hatanız yoksa, ajax fonksiyonundaki $.ajax()({}) yazım yanlış. parantezler fazla dogrusu $.ajax({}) olacak. yani;

$.ajax({
    type: 'get',
    dataType: 'html',
    url: "/Home/Save",
    success: function (data) {
        $("#Detay").html(data);
    },
    error: function () {

    }
});

şeklinde. Tabi eğer başka hatanız yoksa.

Bunun dışında birkaç küçük tavsiye:

  1. dataType: 'html' tanımlamasına gerek yok. Çünkü akıllı tahminleme ile çalışır (intelligent guess)
  2. "/Home/Save" gibi url kullanmayın, 'Url.Action("Save",Home)' kullarsanız, absolute path kullanmış olursunuz ve bu yol, projenin değişmesinden etkilenmez.
  3. [HttpGet] kullanmakta gereksiz. Her actionResult metodu default olarak HttpGet olarak çalışır.
  4. return PartialView("Save", new Student()); yerine return PartialView(); kullanmanız yeterlidir. view ismini yazmaya gerek yok, eğer metod ismi ile aynıysa. Ayrıca boş bir model göndermenize de gerek yok. View içerisinde o modeli zaten tanımlıyorsunuz. Model dolu gidecekse, gonderirsiniz.

GÜNCELLEME

Link kullandığınızdan dolayı ajax çalışmıyor. Ya link yerine button kullanmalısınız ve da sayfada link kullanmışsanız kodlarınız aşağıdaki gibi olmalı

$("#btnSave").click(function (event) {
    event.preventDefault();
    $.ajax({
        type: 'get',
        dataType: 'html',
        url: 'Url.Action("Save","Home")',
        success: function (data) {
            $("#Detay").html(data);
        },
        error: function () {

        }
    });
});

yani linkin yönlendirmesini durdurmanız lazım, ya yukarıdaki gibi event.preventDefault(); ve ya return false;


GÜNCELLEME 2

Yorumlardan sonra örnek çalışan uygulama

Index.cshtml

@{
ViewBag.Title = "Home Page";
}

<script>
$(function () {
    $("#btnSave").click(function (event) {
        event.preventDefault();
        $.ajax({
            type: 'get',
            url: "/Home/Deneme",
            success: function (data) {
                $("#icerik").html(data);
            },
            error: function () {

            }
        });
    });
});
</script>

@Html.ActionLink("Yeni Ekle", "Save", null, new { id = "btnSave" })
<div class="row" id="icerik">

</div>

HomeController.cs

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Deneme()
    {
        return PartialView();
    }
}
permanent link

cevaplandı: 12 Şub '14, 05:28

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288
cevap kabul oranı: 44%

değiştirildi: 12 Şub '14, 06:35

Dediğin gibi değiştirdim kodları ancak gene de farklı bir sayfada açıyor partialViewı. Ben sayfa yenilenmeden aynı sayfada bulunan Detay div ine basmasını istiyorum. Ancak olmuyor.Yeni kodlar yukarıda.

(12 Şub '14, 06:03) emax_64 emax_64's gravatar image

Aslında ajax işlemi yapılıyor. Ancak durum başarılı olduğunda div içersine yazdırılamıyor.

(12 Şub '14, 06:06) emax_64 emax_64's gravatar image

"btnSave" id sine ait buton aslında link mi? view sayfasının kodlarını paylaşsanız sorun cozulecek

(12 Şub '14, 06:10) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Buton yerine link kullanıyorum. Acaba sorun bundan mı kaynaklı,

@Html.ActionLink("Yeni Ekle", "Save", new{ id="btnSave" })

Yeni kodlar yukarıda

(12 Şub '14, 06:10) emax_64 emax_64's gravatar image

Cevabı güncelledim. Tekrar bakın

(12 Şub '14, 06:16) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

denedim ancak çalışmıyor. /Home/Save/btnSave bu sayfasına gidiyor.

(12 Şub '14, 06:20) emax_64 emax_64's gravatar image

@Html.ActionLink("Yeni Ekle", "Save",null, new { id = "btnSave" }) şeklinde değiştirin linki yanlış overload kullanmışsınız.

(12 Şub '14, 06:26) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

sizin yazdıgınızda link cıktısı <a href="Home/Save/btnSave"> benim şimdi yazdığımın cıktısı <a href="Home/Save" id="btnSave">

(12 Şub '14, 06:30) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

dediğin gibi düzelttim yemedi. Şöyle bir durum var. Controller da ilgili metoda yonleniyor ancak durum başarılı olduğunda alert çıkart dedim yapmadı. $("#btnSave").click(function (e) { e.preventDefault(); $.ajax({ type: 'get', dataType: 'html', url: 'Url.Action("Save","Home")', success: function (data) { alert("asd"); $("#Detay").html(data); }, error: function () {

        }
    });
});

success de bir sıkıntı mı var?

(12 Şub '14, 06:30) emax_64 emax_64's gravatar image

Şuan yol düzelti seninki gibi oldu yolu ancak halen farklı bir sayfada gösteriyor?

(12 Şub '14, 06:36) emax_64 emax_64's gravatar image

Url.Action yazarken başına "@" işereti koyun. Cevabı güncelledim tekrar. "@" işaretleri cıkmadıgı için sorun olmuş. @Url.Action(...) olacak o

(12 Şub '14, 06:37) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Tarayıcının geliştirici araçlarını kullanma konusunda biraz daha çaba gösterirseniz bu kadar uğraşmayacaksınız. Tek tek sizin kodunuzdaki söz dizim hatalarını bulmaya çalışıyorum. Birini buluyorum diğerini değiştiriyorsunuz.

(12 Şub '14, 06:38) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Chrome da f12 basarak hataya baksanız Url.Action("Save","Home") diye bir url nin yanlış oldugunu geçersiz oldugunu soyleyecek size.

(12 Şub '14, 06:39) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Yardımların için çok tşkler. Hatanın sebebi şuymuş, $(document).ready(function () {} bunun içersine yazmak lazım kodları. Yazınca oldu. Yeni yeni öğreniyorum mvc yi ondan hataları anlamakta güçlük çekiyorum. Çok sağol yardımların için :)

(12 Şub '14, 06:45) emax_64 emax_64's gravatar image

Sorun değil, sorunlardan birisi oymuş olacak :)

(12 Şub '14, 07:29) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image
15 yorumdan 5 tanesi gösteriliyor hepsini göster
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×158
×81

Soruldu: 12 Şub '14, 04:35

Görüntüleme: 738 kez

Son güncelleme: 12 Şub '14, 07:29

powered by BitNami OSQA