C# MVCAJAX返回的是部分布局,而不是部分布局
我有一个带有家庭控制器和天气控制器的MVC网站。home controller加载起始页(索引)并提供许多选项,所有这些选项都通过ajax.load加载内容:C# MVCAJAX返回的是部分布局,而不是部分布局,c#,jquery,asp.net-mvc,twitter-bootstrap-3,partial-views,C#,Jquery,Asp.net Mvc,Twitter Bootstrap 3,Partial Views,我有一个带有家庭控制器和天气控制器的MVC网站。home controller加载起始页(索引)并提供许多选项,所有这些选项都通过ajax.load加载内容: … LoadContent执行以下操作: function LoadContent(url){ try { $("#divMainContent").load(url, function () { //do visual graphic stuff here ...
…
LoadContent执行以下操作:
function LoadContent(url){
try {
$("#divMainContent").load(url, function () {
//do visual graphic stuff here
...
});
} ...
}
<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>
Weather/Weather controller/view在后端调用天气api,并按如下方式传递模型:
public ActionResult Weather()
{
//api stuff
...
return View(weatherObj);
//return View("_webcams", weatherObj);
}
当我单击列表项以加载我想要的部分时,它将加载Weather/Weather.cshtml视图。它包括以下内容:
function LoadContent(url){
try {
$("#divMainContent").load(url, function () {
//do visual graphic stuff here
...
});
} ...
}
<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>
...
@Html.Partial(“~/Views/Weather/\u webcams.cshtml”)
这是一个jquery ui选项卡布局。很好。_webcams.cshtml部分包含一个引导转盘
查看ajax响应后,HTML部分调用返回完整的布局(其中再次包括引导,从而打破了旋转木马)。为了验证这一点,我尝试让Weather/Weather controller/action直接指向partial(如上面的注释所示),当我直接转到Weather/Weather(从而验证我的partials是否包括周围的_layout.cshtml代码)时,转盘工作
我已经尝试过了,但要么我做得不对(告诉partial使用no layout),要么$().load()函数的行为与普通ajax调用不同
有人能解释一下发生了什么吗?在
$().load()
和$.ajax
之间有着明显的区别
我不知道引擎盖下的区别是什么,但是将我的
$().load
更改为$.ajax
调用解决了这个问题。您是否尝试过返回PartialView(“~/Views/Weather/\u webcams.cshtml”,weatherObj)
在控制器操作中?虽然这只返回部分网络摄像头,而不是我想要的最终响应,但我有,并且部分渲染正确,旋转木马工作。所以,是的!我有。我甚至链接到它,说那里的解决方案或者不工作,因为我使用了$().load,否则我实现的解决方案是错误的。它必须是返回PartialView(weatherObj);
,除非我直接浏览到Weather/Weather,否则它不会工作。因此,如果我通过ajax加载它,它不会工作。