2009-05-06 84 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

相关问题