2009-05-06 151 views
1

嘿,所有。好的,這是情況。我希望能夠將一系列類似的部分視圖加載到父頁面上;與在this文章(模擬AJAX面板)中完成的方式大致相同。使用AJAX加載ASP.NET MVC部分視圖的正確方法?

在文章中,它似乎工作正常,因爲它在控制器上異步調用相應的操作方法。但是他所用的方法看起來像是黑客,看起來並不優雅。簡要概述發生了什麼是:

這將是一個異步加載的獨立小部件。

<% using (Ajax.Form("ReportOne", null, 
     new AjaxOptions { UpdateTargetId = "resultOne" }, 
     new { id="reportFormOne" })) { } %> 

<script type="text/javascript"> 
    $get("reportFormOne").onsubmit(); 
</script> 

相應的輸出將是下面的形式:

<form action="/Home/ReportOne/reportFormOne" onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, { insertionMode: 0, updateTargetId: 'resultDiv' }); return false;"> 

    <!-- Your form elements here... --> 

</form> 

就像我上文所述,這似乎並不像一個非常優雅的方式去實現這一點,但我已經一直試圖找到一個替代方案(使用jQuery或其他方式),並在這樣做沒有成功。

回答

2

jQuery解決方案:在頁面加載完成後從動作中加載html。

<script type='text/javascript'> 
$(function() { 
    $.load('<%= Url.Action("ReportOne", "Home", new { id = "reportFormOne" }) %>', null, function(response,status,xhr) { 
     $('#partialView').html(reponse); 
    }); 
}); 
</script> 

... 

<div id='partialView'> 
</div> 
+0

謝謝。這會很好,然而,如果我需要添加具有類似數據的多個部分視圖,使用jQuery從數據庫中獲取每個需要加載的小部件的id是否合理,然後通過每次調用該操作來循環?這似乎是依靠jQuery非常多。 – blparker 2009-05-06 14:41:05

相關問題