使用Jquery传递列表

时间:2014-08-01 08:57:17

标签: jquery asp.net-mvc

我有这段代码:

$("#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"/>
 }

2 个答案:

答案 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