将对象传递给局部视图

use*_*962 0 asp.net-mvc asp.net-mvc-partialview asp.net-mvc-4

我有这个控制器,它获取一个我想在局部视图中呈现的对象:

public ActionResult EditPhoto(string id)
{
    var photo = RavenSession.Load<ContentPage>(id);
    return View("_editPhoto");
}
Run Code Online (Sandbox Code Playgroud)

它的照片我想传递给我的部分视图.在我看来,我有这个:

@{
    Html.RenderPartial("_editPhoto" );
}
Run Code Online (Sandbox Code Playgroud)

我将如何将我的照片传递到局部视图以便在其父级中呈现?

编辑:这是我将对象传递给控制器​​的方式:

@foreach (var item in Model.Photographys)
{
    <li class="span3" style="text-align: center">

        <div class="thumbnail thumbnail-1">
            @Html.ActionLink(item.Name,
                "EditPhoto",   // <-- ActionMethod
                new { id = item.Id }, // <-- Route arguments.
                null  // <-- htmlArguments .. which are none. You need this value
                //     otherwise you call the WRONG method ...
                //     (refer to comments, below).
            )

            <h3 style="margin-bottom: 10px;">@item.Name</h3>

            <div class="">
                <div class="">
                    <img src="@item.ImgUrl" alt="" style="visibility: visible; opacity: 1;">
                </div>
            </div>

            <section>
                <p>@item.Description</p>
                <a href="#" class="btn btn-1">Read More</a>
                <p>@item.IsAccordion</p>
            </section>
        </div>

    </li>
}
Run Code Online (Sandbox Code Playgroud)

但是这条线似乎有问题:

@{
    Html.RenderPartial("_editPhoto" , Model);
}
Run Code Online (Sandbox Code Playgroud)

模型得到下划线解释说模型传入it(Photo)不是正确的..它似乎_editPhoto继承了与其父类相同的模型?

我设法在视图中执行此操作:

@{
    var i = new Photography();
    Html.RenderPartial("_editPhoto", i);
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,partialView在新窗口中呈现,而不是在我想要它的父窗口中呈现.

更新我要给这个最后一个,不会创建一个新的问题:

这是我的控制器将照片传递给局部视图:

 public ActionResult EditPhoto(string id)
        {
            var photo = RavenSession.Load<ContentPage>(id) as Photography;

            return PartialView("_editPhoto", photo);               
        }
Run Code Online (Sandbox Code Playgroud)

我的"mainview"包含此代码,用于呈现部分视图,并将照片发送给它:

<div class="form-control">
          @{
            var model = new Photography();
            Html.Partial("_editPhoto",model);
                        }

           </div>
Run Code Online (Sandbox Code Playgroud)

这将打开一个新窗口,我的新照片将显示在该窗口中.我希望它在其父视图中呈现的方式与我第一次访问页面时自动呈现的方式相同...

Hir*_*ana 5

你的控制器动作方法应该是:

    public ActionResult EditPhoto(string id)
    {
        var photo = RavenSession.Load<ContentPage>(id);
        return View("EditPhoto",photo);
    }
Run Code Online (Sandbox Code Playgroud)

并且您的"EditPhoto"视图应该是:

    @{ Html.RenderPartial("_editPhoto",Model); }
Run Code Online (Sandbox Code Playgroud)

更新

你的控制器动作方法应该是:

    public ActionResult Photos()
    {
        return View();
    }

    public ActionResult EditPhoto(string id)
    {
        var photo = RavenSession.Load<ContentPage>(id);
        return View(photo);
    }
Run Code Online (Sandbox Code Playgroud)

您的"EditPhoto"应该是视图(不是部分视图),在链接点击时,"EditPhoto"操作方法被调用并返回"EditPhoto"视图