【问题标题】:How do I load views independent of the site.master?如何加载独立于 site.master 的视图?
【发布时间】:2010-01-11 16:09:39
【问题描述】:

我正在准备一个我用 ASP.Net MVC 编写的应用程序,用于一些轻量级的 Ajax-y 内容。基本上,我希望用户能够在不重新加载的情况下转到页面的不同部分。

为此,我希望能够重新加载我的页面正文。

我的网站主人被分解为头部身体和脚部 div。我希望能够使用 $("body").load(whateverlink) 之类的东西来刷新正文,但在我的情况下,这样做会导致网站在正文中呈现。

我怎样才能成功地做到这一点?

编辑:页面由视图组成,而不是部分视图。从理论上讲,我可以将所有页面转换为部分页面,但如果可能的话,我正在寻找解决方法。 谢谢

【问题讨论】:

    标签: c# jquery asp.net-mvc asp.net-ajax


    【解决方案1】:

    您可以让您的控制器返回部分视图,使用 JQuery 执行请求并使用您的页面内容更新 div:

    JQuery:

    function navigate(url){
      $.ajax({
        url: "/Home/Index",
        cache: false,
        success: function(html){
           $("#content").html(html);
          }
       });
    }
    

    控制器:

    public class HomeController : Controller
    {    
        public void Index()
        {
           return this.PartialView();
        }
    }
    

    【讨论】:

    • 我试过这个,但是(技术上更糟)结果。现在它在第一个副本的正下方呈现页面的第二个副本。我有什么我忘记了吗?如果我没有提到它,我正在尝试加载一个新视图而不是部分视图
    • @edude05 我已将 $("#content").append(html) 更改为 $("#content").html(html)。那应该覆盖您的 div 的内容,而不是附加 html
    • 感谢 Charlie,但到目前为止,这给了我与 (main).load(/controller/action) 相同的结果。我需要一种方法让 ASP 将我的视图作为部分视图返回,现在它仍然返回 div 内的整个页面。
    • 您的局部视图是用户控件吗?它需要是一个 ASCX 文件。
    【解决方案2】:

    在 BrightMix 上有一个有用的 article 可能会有所帮助。它基本上将部分呈现为字符串,然后您可以将其作为ContentResult 的一部分返回。

    【讨论】:

      猜你喜欢
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 2020-09-03
      • 2010-10-23
      相关资源
      最近更新 更多