2014-04-12 40 views
0

我的應用程序中有幾個共享剃刀部分視圖,用於顯示不同頁面上產品的某些細節。現在我需要改變部分視圖中的部分鏈接,具體取決於主視圖呈現的部分視圖。根據主視圖更改部分共享部分視圖的靜態內容

例如:

如果局部視圖「index.cshtml」內呈現,在局部視圖的鏈接之一應該是:

<a href="www.site1.com">site1 called from index.cshtml</a> 

,如果它是內部「insert.cshtml」然後鏈接必須是

<a href="www.someothersite2.com">other site that's not 1 and it's called from insert.cshtml</a> 

類似:

@if (something.parentview = "index.cshtml") 
{ <a href="www.site1.com">site1 called from index.cshtml</a>} 
else { 

    <a href="www.someothersite2.com">other site that's not 1 and it's called from insert.cshtml</a> 
} 

有沒有辦法做到這一點?

+0

您可以使用'ViewBag'。在每個控制器中設置值,並在局部視圖中使用它們。 –

+0

這是一個不好的例子,我現在改變了它...我的問題沒有任何與控制器,我只需要顯示不同的數據在一兩行,取決於從哪裏共享部分呈現... –

回答

0

當你調用Shared PartialView時,你知道你在哪裏。 在呈現視圖時,依賴於「檢測」的渲染時,將參數傳遞給您的部分會更容易。想象一下......你有三層嵌套......事情變得更加複雜。想象一下,如果您更改路由或視圖名稱?

您可以使用ViewBag傳遞參數:在您的視圖中,您可以設置某些內容來檢查Partial。不需要控制器代碼。

更健壯的方法是將ViewModel傳遞給您的部分,但如果您需要傳遞的唯一數據只是一個參數,則ViewBag更簡單。