2015-06-16 50 views
1

我具有低於div父視圖內側和下方Html.Action返回PartialView停止Html.Action被調用的裝入

<div id="preview" class="modal fade" role="dialog"> 
<div class="modal-dialog"> 
    <!-- Modal content--> 
    <div class="modal-content"> 
     @Html.Action("GetPrintView", "Connector") 
    </div> 
</div> 

我使用以下的jquery打開上述modal

$("#printdoc").click(function(e) { 
    e.preventDefault(); 
    $(this).attr('data-target', '#preview'); 
    $(this).attr('data-toggle', 'modal'); 
}); 

問題是,無論何時加載父.cshtml它都會調用上面的Html.Action,但這應該只在點擊按鈕時被調用。我嘗試使用data-url作爲div,但仍然重複調用該操作。任何幫助?

回答

2

Html.Action將在加載視圖時執行操作。既然你不想要這個,你需要異步加載數據。

您可以將URL存儲在自定義data-*屬性中以生成URL使用Url.Action。在按鈕的點擊加載使用.load()

HTML

<div class="modal-content" data-url='@Url.Action("GetPrintView", "Connector")'>   
</div> 

腳本

$("#printdoc").click(function (e) { 
    e.preventDefault(); 

    var modal = $("#preview .modal-content"); //Find the element 
    $(modal).load(modal.data('url')); //Fetch url and load partial view 

    $(this).attr('data-target', '#preview'); 
    $(this).attr('data-toggle', 'modal'); 
}); 
+0

這就是我想已經是局部視圖,但它調用局部視圖的操作方法加載父頁面。 – Saroj

+0

@Saroj,這將不會調用部分視圖操作,因爲我們不會在任何地方調用它,除非點擊'printdoc'按鈕。你用過Url.Action嗎? – Satpal

+0

除了'printdoc'點擊之外,這個操作方法無處不在。這種方法仍然被調用。我不知道如何在評論中附上圖片,否則我可能會向您顯示調用堆棧。操作方法是否缺少任何「屬性」? – Saroj