2016-04-06 16 views
0

İşlem bağlantılarına sahip bir listem var. Tüm bağlantılar, modal pencerede param ile kısmi bir görünüm yüklemelidir.ASP.NET MVC ActionLink whith javascript işlevi

Bağlantılar:

@model IEnumerable<string> 

<ul> 
    @foreach (var item in Model) 
    { 
     <li> 
      @Html.ActionLink(item, "MyAction", null, new {code = item}, new {@class = "myclass" }) 
     </li> 
    } 
</ul> 

MyAction:

public ActionResult MyAction(string code) 
{ 
    // logic 
    var model = ... 

    return PartialView("_MyPartialView", model); 
} 

modal açılır ve javascript fonksiyonu ile Bence:

<script type="text/javascript">  
$(function() { 
    $(function() { 
     $('#my-dialog').dialog({ 
      autoOpen: false, 
      width: 400, 
      modal: true 
     }); 

     $('.myclass').click(function (e) { 
      e.preventDefault(); 
      $('#my-dialog').load(this.href, function() { 
       $(this).dialog('open'); 
      }); 
      return false; 
     }); 
    }); 
</script>  
<div id="my-dialog"></div> 

Ama tık actionlink üzerinde js fonksiyonu çalışmaz ve kısmi görünümü sadece yeni sayfaya yükleyin. Bu işlevde kesme noktası oluşturmaya çalışıyorum, ancak kesme noktası çalışmıyor, bu işlev tıklama olayıyla çağrı yapmadı demektir.

+0

Ne, herhangi bir hata size tarayıcı konsoluna olsun ne olur? (ve 2 x '$ (function() {' bir yazım hatası mı?) olduğunu düşünelim. –

+0

Konsolda hata yok. –

cevap

0

bu deneyin tavsiye için teşekkürler ....... görüşünüz kısmi bir görünüm yüklemek için tek yol render edildiğinde

<script type="text/javascript">  
$(function() { 
    $(function() { 
     $('#my-dialog').dialog({ 
      autoOpen: false, 
      width: 400, 
      modal: true 
     }); 

      $(body).on('click','.myclass',function(e){  
      e.preventDefault(); 
      $('#my-dialog').load(this.href, function() { 
       $(this).dialog('open'); 
      }); 
      return false; 
     }); 
    }); 
</script>  
<div id="my-dialog"></div> 
0

sizin Popup

kısmi görünümü döndüren bir Ajax çağrısı yoluyla olduğunu

HTML

@model IEnumerable<string> 

<ul> 
@foreach (var item in Model) 
{ 
    <li> 
     <a onclick="showModal('@item')" class="myclass">item</a> 
    </li> 
} 

<div id="my-dialog"></div> 

jQuery

<script type="text/javascript">  
$(function() { 
    $('#my-dialog').dialog({ 
     autoOpen: false, 
     width: 400, 
     modal: true 
    }); 

function showModal(code) { 
     $.ajax({ 
      url: "myController/MyAction?code="+code, 
      type: 'get', 
      success: function (result) { 
       $('#my-dialog').html(result); 
       $('#my-dialog').dialog('open') 
      }, 
      } 
     }); 
    } 
</script> 

Eylem:

public ActionResult MyAction(string code) 
{ 
// logic 
var model = ... 

return PartialView("_MyPartialView", model); 
} 
+0

OP, **. ** ajax! –

+0

.load olan '.load()' kullanıyor) 'dir, ancak varsayılan olarak Eylem Bağlantısı da sonuç verecek olan eylem yöntemini çağırır ve sayfa yeniden yüklenir. –

+0

Varsayılan eylem iptal edildiğinde ('e.preventDefault();' veya 'false;' ve OP her ikisi de yapıyor!) –