使用AJAX加载ASP.NET MVC部分视图的正确方法?

时间:2009-05-06 13:26:06

标签: jquery asp.net-mvc ajax

嘿所有人。好的,情况就是这样。我希望能够将一系列类似的局部视图加载到父页面上;与this文章(模拟AJAX面板)中的内容完全相同。

在文章中,它似乎工作正常,因为它在控制器上异步调用相应的操作方法。但他使用的方法看起来就像是一个黑客,而且看起来并不优雅。简要概述了正在发生的事情:

这将是一个异步加载的独立窗口小部件。     

<% 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或其他方法),并且一直没有成功这样做。

1 个答案:

答案 0 :(得分: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>