2014-01-13 85 views
0

我有一個局部視圖的主視圖。 部分視圖允許分頁,我使用Bootstrap。在部分視圖上尋呼

控制器:

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

//[ChildActionOnly] 
public ActionResult _Partial(int page) 
{ 
    Model = //returns records for requested page 
    return View(Model); 
} 

查看:

<ul class="pagination"> 
    @for (int i = 1; i <= model.TotalPages; i++) 
    { 
     <li>@Html.ActionLink(i.ToString(), "_Partial", new { page = i, })</li> } 
    } 
</ul> 

我的問題是,雖然尋呼作品,選擇頁面直接調用_Partial行動(之後我刪除[ChildActionOnly] 所以上的分頁,它僅在沒有主視圖的情況下加載局部視圖,因此它缺少主視圖或任何格式提供的「框架」。

我應該採用不同的方法還是有辦法調用部分操作並且它是主操作?

我想我會喜歡做這樣的事情......

<li>@Html.ActionLink(i.ToString(), "Main + _Partial", new { page = i, })</li> 

或者我怎樣才能引導尋呼(我不想去阿賈克斯路線)上的局部視圖工作?

回答

0

如果你不想使用ajax,那麼你必須返回整個頁面。這裏爲你情況的一個例子:

控制器:

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

public ActionResult SomeAction(int page) //Name this as your like 
{ 
    // I use viewbag here for convenience, 
    //you should consider to create new view model if necessary. 
    ViewBag.PageNum = page; 

    return View(); 
} 

//[ChildActionOnly] 
public ActionResult _Partial(int page) 
{ 
    Model = //returns records for requested page 
    return View(Model); 
} 

查看 「SomeAction.cshtml」:

@*Put your Main page content here*@ 

@Html.Action("SomeAction", "YourControllerName", new { page = ViewBag.PageNum }) 

@*Put your Main page content here*@ 

和你的分頁應更改爲:

<ul class="pagination"> 
    @for (int i = 1; i <= model.TotalPages; i++) 
    { 
     <li>@Html.ActionLink(i.ToString(), "SomeAction", new { page = i, })</li> } 
    } 
</ul> 

請因爲我不知道你的「主」行爲究竟做了什麼,所以我創建了「SomeAction」。如果「Main」僅僅是第一頁,那麼您應該將「SomeAction」和「Main」合併爲一個:

public ActionResult Main(int page = 1) 
{ 
    ViewBag.PageNum = page; 

    return View(); 
} 
+0

您是對的;我不應該叫部分行動。起初我誤解了我自己的問題。 我有一個帶有3個Bootstrap選項卡的主視圖,每個選項卡都有一個局部視圖。並且每個選項卡都有分頁。問題是當我更改標籤2上的頁面時,主視圖將被加載,並且它不會意識到標籤2應該是活動標籤。我想我會需要一些Java來做到這一點,但我會發佈一個單獨的問題。我已經標記你的答案是正確的,因爲它確實回答了發佈的原始問題。 – Basquiat