2010-12-19 161 views
0

基本上,我開始研究這個應用程序,對web開發一無所知,這嚴重地抑制了我的搜索功能。大概應該讀一本書,但這不太可能。使用ASP.NET MVC3 RC2,我試圖製作一個強類型的局部視圖,它可以導航到相關的項目,以及維護一個麪包屑路徑(我認爲這是一個ViewBag中的列表?)。一個很好的比喻就是一個帶有詞庫子視圖的詞典頁面。強類型的局部視圖導航

class Entry 
{ 
    string Name; 
    string Definition; 
    IEnumerable<Entry> Synonyms; 
} 

主要頁面顯示的字和它的定義等,但有與您可以點擊查看所選詞的同義詞,替換瓦特/ AJAX同義詞一個div。

我最初認爲我需要做一個html助手,但後來我看到有關從我的控制器中返回PartialView的東西,看起來好多了。

我在拼圖拼圖的所有部分時遇到了麻煩。樣本或輪廓會很好。

謝謝!

回答

1

男人,我知道我應該在提問前多花一點時間。

所以,這裏的食譜:

  1. 使控制器的功能,Synonym(id) { return PartialView(GetEntry(id)); }
  2. 做一個局部視圖,Synonym.cshtml,強類型的門檻。
  3. 顯示在主顯示器<div id="Synonyms">@{Html.RenderAction("Synonym", @Model.Id);}</div>
  4. 對於內部Synonym.cshtml阿賈克斯導航鏈接的局部視圖,使用這樣的

    @foreach(Entry syn in @Model.Synonyms) 
        @Ajax.ActionLink((string)@syn.Name, "Synonym", 
         new { id = @syn.Id }, new AjaxOptions { UpdateTargetId = "Synonyms" }) 
    

一件事,簡單地絆倒我是new { id = @syn.Id },因爲我的控制器中的參數名稱實際上是數字,我必須使用new { number = ... }

哦,我問了導航。我認爲瀏覽器的後退按鈕對於大多數導航都足夠了,但仍然需要一個「返回當前字詞」鏈接。對於我做了以下內容:

  1. 修改Controller.Synonym採取另一種參數,int orig並在返回之前設置ViewBag.OrigId = orig;
  2. 修改了ActionLinks說new { id = @syn.Id, orig = @ViewBag.OrigId }
  3. 創建內部Synonym.cshtml後面鏈接 - @Ajax.ActionLink("Back To Current Word", "Synonym", new { id = @ViewBag.OrigId, orig = @ViewBag.OrigId }, new AjaxOptions { UpdateTargetId = "Synonyms" })
  4. 修改調用@Html.RenderAction在ActionLinks new { id = @Model.Id, orig = @Model.Id }

傳遞一個對象就像如果有人來了有一個更好的答案讓我想重寫我的東西,我會接受他們的。我很想反饋我是否缺少任何東西,比如我如何避免Controller.Synonym或其他簡化或改進的第二個參數。

相關問題