1

我有一个 MVC3 应用程序,我正在将 pjax实现到 . 一切都运行良好,除了在加载地址时在服务器端执行的操作,该地址在客户端还没有主视图。我的控制器代码看起来像

public virtual ActionResult Details(Guid id)
    {
        var partDetail = new PartDetail(id);
        var partialView = PartialView("Details", partDetail);
        if(Request.Headers["X-PJAX"]!= null)
        {
            return partialView;
        }

        var mainView =  View("Index");
        // Stick Partial View into main view at #update_panel?
        return mainView;
    }

如何将部分视图粘贴到主视图中,以便在#update_panel 中插入部分视图?

4

1 回答 1

2

好的,如果没有重大重构,您可以执行以下操作。

(这假设您能够将@modelon index.cshtml 设置为PartDetail())。

在上面的控制器操作中,更改:

var mainView =  View("Index");

到:

var mainView =  View("Index", partDetail);

然后,在您的 index.cshtml 中,添加以下内容:

<div id="update_panel">@RenderPartial("Details", Model)</div>

正如我所说,这仅在索引 @model 设置为时才有效PartDetail(),否则,需要对索引视图中的模型进行一些重构以包含此PartDetail()模型。此视图模型可能如下所示:

public class IndexViewModel
{
    ModelForIndex Index{get; set;}
    PartDetail Details{get; set;}
}

这个重构的视图模型将被添加到 index.cshtml 中@model IndexViewModel,并由部分使用:

<div id="update_panel">@RenderPartial("Details", Model.Details)</div>

希望这是有道理的。

于 2012-02-17T16:33:22.017 回答