MVC ajax 正在返回带有布局的部分而不是部分

MVC ajax is returning partial with layout instead of as a partial

我有一个带有家庭控制器和天气控制器的 MVC 网站。家庭控制器加载起始页(索引)并显示多个选项,这些选项均通过 ajax.load 加载内容,因此:

<li onclick="LoadContent('/Weather/Weather');">...</li>

LoadContent 执行以下操作:

function LoadContent(url){
    try {
        $("#divMainContent").load(url, function () {
            //do visual graphic stuff here
            ...
        });
    } ...
}

Weather/Weather controller/view 在后端调用天气 api 并像这样传递模型:

public ActionResult Weather()
    {
        //api stuff
        ...
        return View(weatherObj);
        //return View("_webcams", weatherObj);
    }

当我单击列表项以加载我想要的部分时,它会加载 Weather/Weather.cshtml 视图。它包括以下内容:

<div id="tabs">
    <ul>
        <li>...</li>
        <li><a href="#tabs-6">Webcams</a></li>
    </ul>
    ...
    <div id="tabs-6">
        @Html.Partial("~/Views/Weather/_webcams.cshtml")
    </div>
</div>

这是 jquery ui 选项卡布局。工作正常。 _webcams.cshtml 部分包含一个 bootstrap 轮播。

查看 ajax 响应后,HTML 部分调用将返回完整布局(其中再次包含 bootstrap,从而破坏轮播)。为了验证这一点,我尝试让 Weather/Weather controller/action 直接指向部分(如上面的注释)并且当我直接转到 Weather/Weather 时轮播工作(从而验证我的部分包括周围的 _layout.cshtml 代码。

我试过 the solutions here 但要么我做错了(告诉部分不使用布局)要么 $().load() 函数的行为与正常的不同 ajax 称呼。

有人可以阐明发生了什么事吗?

$().load()$.ajax 之间有明显的区别。

我不知道引擎盖下的区别是什么,但是将我的 $().load 更改为 $.ajax 调用解决了问题。