2013-10-15 118 views
2

我正在使用ASP.NET Razor MVC,並使用部分視圖來處理我不想在每個頁面上更新的常見內容。只包含ASP.NET的部分視圖的一部分Razor MVC

我使用下面的語法,包括我的部分觀點:

@Html.Partial("PartialView") 

在一個特定的局部視圖,我有兩個div:

<div class="divA"> 
    CONTENT 
</div> 

<div class="divB"> 
    CONTENT 
</div> 

不過,我只想包含內容從​​。我可以做類似以下的內容嗎?只包含​​的內容?

@Html.Partial("PartialView", @divA) 

如果不是,我該怎麼做?

+0

您可以將局部視圖拆分爲兩部分。 –

回答

4

你可以做局部強類型的視圖模型:

public class MyViewModel 
{ 
    public bool ShowOnlyPartA { get; set; } 
} 

,然後讓你的視圖強類型這種模式:

@model MyViewModel 

<div class="divA"> 
    CONTENT 
</div> 

@if (Model == null || !Model.ShowOnlyPartA) 
{ 
    <div class="divB"> 
     CONTENT 
    </div> 
} 

,然後你可以把你的部分是這樣:

@Html.Partial("PartialView", new MyViewModel { ShowOnlyPartA = true }) 

或像這樣:

@Html.Partial("PartialView") 
+0

謝謝你。我會實施它,讓你知道它是否有效。 – Keven

+0

太棒了。有效。我在沒有'@model MyViewModel'的情況下嘗試了它,它仍然有效。任何理由?會不會導致未來出現問題?我想我不明白需要強制鍵入視圖的部分視圖? – Keven

+0

只是在開玩笑。我仍然看到一些問題,並相信這是因爲模型。我得到一個'InvalidOperationException',它說類似「傳入字典的模型項目是MyOtherViewModel類型的,但是這個字典需要一個類型爲MyViewModel的模型項目,所以它期望來自另一個模型的數據,但是我只能通過從MyViewModel傳遞數據 – Keven

1

優秀的問題以及來自達林的答案。作爲替代,請傳遞一個字符串:

<!-- View --> 
@Html.Partial("PartialView", "divA") 

<!-- PartialView --> 
@if (Model == "divA") 
{ 
    <div class="divA"> 
    </div> 
} 

@if (Model == "divB") 
{ 
    <div class="divB"> 
    </div> 
}