2014-10-02 83 views
0

我使用asp.net MVC 5.如何呈現在主要佈局文件部分景色節

我有一個_layout文件,如下所示:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    @Html.Partial("_Head") 
    @RenderSection("styles", required: false) 
</head> 

<body> 
    @RenderBody() 
@RenderSection("scripts", required: false) 

</body> 
</html> 

然後我有我的主視圖:

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
    Title = "mainView" 
} 

    <div class="partialcontents" data-url="/user/UserList"></div> 

$(document).ready(function (e) { 
      $(".partialcontents").each(
       function (index, item) { 
        var url = $(item).data("url"); 
        if (url && url.length > 0) { 
         $(item).load(url, function() { $(this).css("background-image", "none"); }); 
        } 
       } 
      ); 
     }); 

,這裏是我的局部視圖:

@{ 

} 
<p> Partial View</p> 

@section scripts 
{ 
    @Scripts.Render("~/bundles/script/datatable") 
} 


My controller that renders the partial view: 


[Authorize] 
     public ActionResult UserList(UsersViewModel model, string sortOrder, string currentFilter, string searchString, int? page) 
     { 
.... removed for simplicity 
return PartialView("_UserList", new UsersViewModel() 
      { 
       Users = users.ToPagedList(pageNumber, pageSize) 
      }); 
} 

所以現在我的問題是,部分視圖中的部分沒有在主佈局文件中呈現。我明白我爲什麼認爲...

因爲我在另一個控制器中呈現它。然後傳遞它。

但是,我怎麼能得到這個權利?

+0

根據上述細節,我在佈局頁面內沒有發現_Head @ Html.Partial(「_ Head」)以外的任何局部視圖。我沒有找到任何使用「_UserList」局部視圖的視圖。 – 2014-10-02 11:20:22

+1

[將內容注入具有Razor View Engine的ASP.NET MVC 3的部分視圖中的特定部分](http://stackoverflow.com/q/7556400/1199711) – Zabavsky 2014-10-02 11:31:17

回答

1

您應該將:

@section scripts 
{ 
    @Scripts.Render("~/bundles/script/datatable") 
} 

在主視圖,becuse AJAX請求返回只是部分沒有佈局,MVC不知道它應該使這個腳本部分。在這個AJAX請求@RenderSection("scripts", required: false)永遠不會被評估。如果你在你的部分中忽略了@section scripts它很可能會工作,但是這不是很好,包括js在ajax調用中,所以不要這樣做,如果你不需要。

+0

可能不是我想要的那麼優雅,但我猜猜它會做這項工作。謝謝 – Zapnologica 2014-10-02 13:27:18

+0

正確,省略@section腳本,它將實現部分腳本位置 – 2015-09-02 01:34:30