2012-12-04 189 views
0

我设法使用jquery ajax在另一页面的div内加载一个不同的页面。我遇到的问题是当我点击这个子页面中的一个按钮时,它会导致回传到整个父页面。我如何强制它刷新它所在的面板?使用Ajax在另一个ASP.Net页面中加载ASP.Net页面

还有一件事。我不知道我做的是正确的事情,但父页面有runat = server设置的自己的形式,而在div中加载的辅助页面有它自己的形式。我无法从后者中删除表单,因为它会导致错误。

我已经看过一些asp.net ajax教程,但他们不处理加载他们自己的.net控件的子页面。任何人都可以指导我一些很好的教程?

谢谢!

+0

怎么样的IFRAME? – Lloyd

+0

将HTML加载到变量中并使用ajax将字符串写入到所需的位置 – CR41G14

+0

将页面加载到页面中,确实使页面成为该页面的一部分,因此它在页面级别所做的任何操作(例如提交)都可以用于该页面实体(页面DOM)在这种情况下。您需要拦截提交以使其仅在您需要影响的部分上工作。 –

回答

0

你需要创建一个空的一个ID,例如:ajaxDiv

然后创建一个jQuery脚本是这样的:

<script type="text/javascript"> 
    // Called at the loading of a page 
     $(document).ready(function() { 
    //here you execute an ajax function 
    $.ajax({ 
         url: 'the url to retrieve data as string ex : /Webservice/Test', 
         type: 'get', 
         async: true of false, 
//if the request is successful, you load the content of your div with the strings you loaded 
         success: function (data) { 
          $("ajaxDiv").html(data); 

         } 
        }); 

    }); 
    </script> 

的秘诀就是你的页面加载到Ajax请求。

+0

谢谢Giu Do.该代码与我用来加载子页面的代码类似。但是,如何让子页面中的控件仅影响该页面(而不是主页面)? – Osprey

+0

你使用ASP.NET MVC吗?因为有了它你就可以用里面的形式和与主页无关的模型来定义“局部视图”。 如果没有,那么尝试一个控件来重新加载div ajaxDiv,所以你需要在局部视图中调用/实现函数。 – Giu

+0

我是新来的ASP.net,我不熟悉MVC。我来自一个经典的ASP背景,我使用AJAX时,我会传递一个查询字符串的命令,并重新加载局部视图。我理解ASP.Net的工作方式不同。 – Osprey

0

好的,因为您使用的是jQuery,所以让我们设置该事件操作。 我认为以下标记:

<button type="submit" id="mySubmitButtonId">Submit</button> 

然后,我的网页上,我有以下的javascript:

$("#mySubmitButtonId").click(function(event) { 
    event.preventDefault(); 
    // do here what you want to do instead including refresh of a section via ajax 
});