2012-05-30 17 views
6

Bir MVC3 uygulamasına sahibim ve ajax yükleme görüntüsü eklemem gerekiyor. Ajax'ta yüklemeEngineLeginForm yükleme görüntüsünü görüntülemiyor

<div id="div_loading" style="display:none;"> 
    <img src="@Url.Content("~/Content/Images/loading.gif")" alt="" /> 
</div> 

geri formu göndermek için benim Gönder düğmesini tıklayın

, nqpqiw.png görünür asla: Benim bakış

@using (Ajax.BeginForm(
     "LogOn","Account", 
     new AjaxOptions { LoadingElementId = "div_loading" })) 

Bu aynı görünüm benim çok basit div olduğu bu koydu. Kodum iyi çalışıyor, ancak yükleme göstergesi görünmüyor. Ve görüntü doğru ve doğru bir şekilde adlandırılmıştır. Neden bir ipucu var ki?

Güncelleştirme Görünüşe göre, bunun Telerik uygulamaları ile bir ilgisi vardır. Eğer düzenli bir MVC3 uygulaması oluşturursam işe yarıyor. Bir Telerik MVC3 uygulaması oluşturduğumda, işe yaramıyor. Bunu Telerik ile başka biriyle karşılaştı mı?

+0

Firebug ile hata ayıklamayı denediniz mi? Konsolunuzda herhangi bir hata var mı? –

cevap

6

Yaptığım her ajax çağrısına bir yükleme iamge eklemekten çekinmemeyi tercih ederim.

Display spinner while waiting For ajax

İhtiyacınız olan işlevlere sahiptir:

burada üst cevabı

ajax gönderme çağrısı yaptığında bir ajax spinner (yükleme görüntüsü) görüntülemek için bir çözümdür. Sadece görüntünün ekranını ajax çağrılarına eklemek için javascript kullanın. Ne yapar ajax göndermek üzerinde div görüntülemek ve Sayfanızdaki tüm aramalar için ajax durak veya hata üzerine saklıyor

<script type="text/javascript"> 
     $(document).ready(function() { 
      BindSpinner(); 
     }); 

     function BindSpinner() { 
      $("#div_loading").bind("ajaxSend", function() { 
       $(this).show(); 
      }).bind("ajaxStop", function() { 
       $(this).hide(); 
      }).bind("ajaxError", function() { 
       $(this).hide(); 
      }); 
     }; 
    </script> 

:

gibi bir şey olmalıdır. Bu komut dosyasını ve div'u _layout'unuza yerleştirirseniz, bunu sitenizdeki her Ajax çağrısı için yapar.

+0

Yanıt verdiğiniz için teşekkür ederiz. Bunu _Layout.cshtml dosyasına ekledim ve hala yükleyiciyi görmedim. AjaxSend yaratmam gereken bir yöntem mi? – BoundForGlory

+0

Açık görünüyor ama projenize yüklenen resim mi? Div görüntülendiğinden emin olmak için alternatif metni bir şeye ayarlamayı deneyin. Oh ve divunuzun _layout'ta olduğundan emin ol. – Totero

+0

Evet, onun var. Eğer stili kaldırırsam = "display: none" ve yenile, gif gösterir. İnan bana, ilk önce ona baktım. – BoundForGlory

1

Bunun yerine bunu denemek isteyebilirsiniz. Ben SO Sen den de bu deneyebilirsiniz here

<div id="div_loading" style="visibility:hidden;"> 
    <img src="@Url.Content("~/Content/Images/loading.gif")" alt="" /> 
</div> 
+0

Parmaklarımın çarpı ile çalıştığını denedim, işe yaramadı :(Bir örnek proje kurdum ve işe yarıyor.Onun ana projeme taşıdım ve öyle değil. Ama bu çok basit görünüyor.Onları – BoundForGlory

+0

'dan önce sakladım ve görüntüledim yükleme gif'iniz çıktı dizininize kopyalanmıyor mu?Oluştur eylemi içerik olarak ayarlandı mı ve çıktıya kopyala her zaman kopyala/daha yeni kopyala ayarlanmış mı? –

+0

nevermind, sadece Totero'nun cevabından okunan yorumu okuyun. –

14

soru aldım: Ben aynı sorunu vardı here

function AjaxBegin() 
{ 
    $('#div_loading').show(); 

} 
function AjaxComplete() 
{ 
    $("#div_loading").hide(); 
} 
function AjaxFailure(ajaxContext) 
{ 
    var response = ajaxContext.responseText; 
    alert("Error Code [" + ajaxContext.ErrorCode + "] " + response); 
} 


AjaxOptions: 

OnFailure = "AjaxFailure"; 
OnBegin = "AjaxBegin"; 
OnComplete = "AjaxComplete"; 
+0

Bence OnBegin gitmek için bir yol olabilir ama benim yöntemimi AjaxBegin çağırmıyor. Yeni AjaxOptions {OnBegin = "return AjaxBegin()"}) – BoundForGlory

+0

AjaxOptions Olayları ya bir javascript dizesi veya bir javascript işlevi adı alır, böylece AjaxBegin işleviniz genel ad alanında kaldığı sürece çalışmalıdır. Eğer giderseniz işe yarar: yeni AjaxOptions {OnBegin = "AjaxBegin"} –

+0

@ user1202717 Hey, sadece senin için çalışıp çalışmadığını görmek istedim mi? –

0

ve olması elementin adını değiştirerek çözmeyi başardı gösterilen/gizli. Deve-case formatını kullandım: "myDivToBeHidden"

Bu elemanın "display" özelliğinin "none" olarak ayarlanması gerekir.

İlgili konular