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
调用解决了问题。
我有一个带有家庭控制器和天气控制器的 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
调用解决了问题。