我有这段代码:
$("#allphotos").click(function () {
$("<div></div>")
.addClass("dialog")
.appendTo("body")
.dialog({
close: function() { $(this).remove(); },
modal: true,
height: 1000,
width: 1000
})
.load("/Home/AllPhotos", data);
});
这个方法:
public ActionResult AllPhotos()
{
var listofPhotos =
RavenSession.Query<ContentPage>()
.Where(o => o.Template.ContentPageType == "aPhoto_web.Models.Photography, aPhoto_web")
.AsProjection<Photography>()
.ToList();
var avm = new AdminViewModel();
avm.Photographys = listofPhotos;
return PartialView("_allPhoto", avm.Photographys);
}
该方法返回一个我希望Jquery在对话框中显示的photographys列表。我很确定这一行:
.load("/Home/AllPhotos", data);
是问题所在。什么尝试的想法?
查看:
@model aPhoto_web.Models.AdminPages.AdminViewModel
<h1>Test to see if dialog is empty...and it is</h1>
@foreach (var item in Model.Photographys)
{
<img src="@item.ImgUrl"/>
}
答案 0 :(得分:1)
使用@ Url.Action并从.load()中删除数据,因为您不想向控制器发送任何内容:
$("#allphotos").click(function () {
$("<div></div>")
.addClass("dialog")
.appendTo("body")
.dialog({
close: function() { $(this).remove(); },
modal: true,
height: 1000,
width: 1000
})
.load(@Url.Action("AllPhotos", "Home");
});
并更正AllPhotos的返回类型,因为您的部分视图需要AdminViewModel对象。
public ActionResult AllPhotos()
{
var listofPhotos =
RavenSession.Query<ContentPage>()
.Where(o => o.Template.ContentPageType == "aPhoto_web.Models.Photography, aPhoto_web")
.AsProjection<Photography>()
.ToList();
var avm = new AdminViewModel();
avm.Photographys = listofPhotos;
return PartialView("_allPhoto", avm); <---------
}
答案 1 :(得分:1)
您不期望控制器中有任何参数,请在JavaScript代码中尝试此操作。
.load("/Home/AllPhotos");
在你看来尝试这个。
return PartialView("_allPhoto", avm);
您的观点期待AdminViewModel
。