我有一個佈局中我使用了一個局部圖的佈局頁面內局部視圖,局部視圖包含我建立了一個菜單功能,我分裂菜單成局部視圖,以確保很容易維護。該菜單被故意放置在佈局中,因爲它在每個頁面上都使用,但是菜單中有條件元素,因此某些選項僅出現在特定頁面上。無法模型傳遞到佈局頁
我已經偶然發現了一個問題,我向前移動,菜單使用ajax調用來渲染包含內容的部分視圖(減少頁面加載)我只是在包含公司的頁面上工作,公司包含聯繫人列表,單擊時的菜單選項應顯示聯繫人列表。我已經在公司模型下加載了聯繫人列表,但是!我無法從應該呈現聯繫人列表的新的局部視圖訪問它,因爲菜單是佈局頁面中包含的局部視圖,因此無法接受模型,所以我無法將模型傳遞到局部視圖I我試圖加載,因爲菜單局部視圖位於佈局頁面中。
這是一個棘手的情況,我顯然可以改變佈局來呈現一個新的部分來包含菜單,所以我可以傳遞一個新的視圖模型,但是我建立的每一個頁面都需要引用菜單(什麼是害蟲!)我必須在這裏失去一些東西(考慮到這是我的第一個MVC3應用程序可能)。有什麼建議麼?
編輯:我自己進一步研究了這個問題,簡而言之,我的佈局頁面總是能夠訪問使用它的頁面模型,因爲包含菜單的我的部分視圖也可以訪問這些數據。我在菜單局部視圖中編寫了一些條件邏輯,用於檢查頁面,然後根據需要傳入數據。
<div class="menu">
<ul>
<li><a href="@Url.Action("Create", "Contact")">New Contact </li>
<li><a href="@Url.Action("Index", "Contact")">Contact List </a></li>
</ul>
@if (Request.Url.PathAndQuery.Contains("/Contact/Details/"))
{
<ul>
<li>@Html.ActionLink("New Activity", "Create", "Activity", new { companyid = 0, contactid = Model.contact.id }, null)</li>
</ul>
}
</div>
上面是菜單局部視圖的小樣品,但包含一個例子,其中菜單被建成爲接觸/細節頁,並能夠在傳遞model.contact.id。它的工作原理是我的菜單和我的佈局沒有明確包含模型,但它不太整齊。
感謝您的回覆,我對此進行了一點修改,以便對我的帖子進行編輯。 – 2012-04-15 20:43:36
@DavidAbraham編輯我的答案,就您的新關注提出建議。 – DMulligan 2012-04-16 04:50:14