您好,有人可以告诉我如何将PartialView加载到我准备好位于_Layout.cshtml中的div容器中(与链接本身完全分开)。我想通过点击以下操作链接将其加载到容器中:
<a href="@Url.Action("RenderColorbox", "ContactPartial", new { path = "_ContactPartial" })" class="colorboxLink"><span>ContactUs</span></a>
我想在没有javascript的情况下这样做,因为我需要在我的控制器中创建一个模型并将其传递给PartialView,我不认为可以使用javascript将强类型模型传递给视图。
如果我想,我可以使用:
$('.colorboxLink').click(function () {
$('.colorbox_container').load(this.href);
});
但正如我所提到的,这并没有让我有机会创建并将强类型模型传递给局部视图......重要的是我可以创建并将模型传递给视图,因为我得到一个空引用异常时我在局部视图中尝试类似foreach(Model.ItemList中的var项)的内容。
这是我的控制器的样子:
public virtual ActionResult RenderColorbox(string path)
{
return PartialView(path, null);
}
但是,目前,单击操作链接只会在新的空白页面中呈现PartialView,而不是在我设置的容器内。
谢谢大家的帮助。
编辑:要加载颜色框,我使用了以下建议:
$('.colorboxLink').click(function () {
$('.colorbox_container').load(this.href, function () {
var colorboxOptions = {
inline: true,
scrolling: false,
opacity: ".9",
fixed: true,
onLoad: function () {
$('#cboxContent').css({
"background": "white"
});
$('#cboxLoadedContent').css({
"margin-bottom": "28px",
"height": "558px"
});
}
}
$('#contactColorbox').colorbox(colorboxOptions);
});
但是仍然加载没有colorbox,而是作为弹出模式加载。
答案 0 :(得分:0)
但正如我所提到的,这并没有给我创造和传递的机会 部分视图的强类型模型。
它给你这样的机会。您正在向ContactPartial控制器上的RenderColorbox
操作发送AJAX请求。在此操作中,您可以准备并将所需的任何复杂视图模型发送到部分:
public ActionResult RenderColorbox(string path)
{
SomeComplexModel model = ...
return PartialView(path, model);
}
还要确保通过单击处理程序返回false来取消链接的默认操作:
$(function() {
$('.colorboxLink').click(function () {
$('.colorbox_container').load(this.href);
return false;
});
});
如果你不这样做,当你点击链接时,你的AJAX调用几乎没有机会在浏览器重定向到目标页面之前执行。