2016-02-14 69 views
0

我試圖插入基於在一個條件下拍攝圖片的鏈接:嵌套如果語句插入的圖片鏈接與MVC Razor視圖

,基本代碼是:

@if(Model.PictureCount > 0) 
{ 
    <img src="@[email protected][0].Filename" width="535" height="385" /> 
} 

現在我需要插入鏈接圖片周圍如果ID,如果XXX

@if(Model.PictureCount > 0) 
{ 
    if(Model.Id == 18777) 
    { 
     <a target="_blank" href="XXXX"> 
    } 
     <img src="@[email protected][0].Filename" width="535" height="385" /> 
    if(Model.Id == 18777) // <-- this If is not working has a C# condition 
    { 
     </a> 
    } 
} 

的問題是,第二如果條件不工作有一個C#代碼,它只是顯示了HTML文本。

我該如何解決這個問題?

回答

1

試試這個

@if(Model.PictureCount > 0) 
{ 
    if(Model.Id == 18777) 
    { 
     @:<a target="_blank" href="XXXX"> 
    } 
     <img src="@[email protected][0].Filename" width="535" height="385" /> 
    if(Model.Id == 18777) // <-- this If is not working has a C# condition 
    { 
     @:</a> 
    } 
} 

或者這

@if(Model.PictureCount > 0) 
{ 
    if(Model.Id == 18777) 
    { 
     @Html.Raw("<a target='_blank' href='XXXX'>") 
    } 
     <img src="@[email protected][0].Filename" width="535" height="385" /> 
    if(Model.Id == 18777) // <-- this If is not working has a C# condition 
    { 
     @Html.Raw("</a>"); 
    } 
} 
+1

嗨,謝謝!我選擇了你的第一個解決方案,因爲它很簡單,它遵守DRY規則 – Patrick

2
@if(Model.PictureCount > 0) 
{ 
    if(Model.Id == 18777) 
    { 
     <a target="_blank" href="XXXX"> 
     <img src="@[email protected][0].Filename" width="535" height="385" /> 
     </a> 
    } 
    else 
    { 
     <img src="@[email protected][0].Filename" width="535" height="385" /> 
    } 
} 
+0

嗨,謝謝,但我必須重複IMG代碼? – Patrick

+0

你爲什麼不喜歡? –

+1

由於DRY規則 – Patrick

1

的問題是,刀片仍需要有效平衡的HTML標籤。所以你不能在一個條件中打開一個標籤,因爲在該條件的主體內該標籤沒有關閉。

基本上,你這裏有三個選項:

這恰好是HTML
  1. 輸出原始文本。

    您可以使用Html.Raw幫助程序或使用特殊原始剃刀語法@:來做到這一點。雙方將允許你輸出的開始和結束標記沒有它有效解析:

    if (Model.Id == 18777) 
    { 
        @Html.Raw("<a target=\"_blank\" href=\"XXXX\">"); 
    } 
    <img src="@[email protected][0].Filename" width="535" height="385" /> 
    if (Model.Id == 18777) 
    { 
        @:</a> 
    } 
    
  2. 有兩臺案件都有自己的充分和有效的HTML代碼。這需要你,雖然重複內容:

    if (Model.Id == 18777) 
    { 
        <a target="_blank" href="XXXX"> 
         <img src="@[email protected][0].Filename" width="535" height="385" /> 
        </a> 
    } 
    else 
    { 
        <img src="@[email protected][0].Filename" width="535" height="385" /> 
    } 
    
  3. 選擇一個標記,使您可以完全避免這個問題。在這種情況下,你仍然可以換一切都在一個鏈接,但作出這樣的鏈接不工作的時候你的條件是不正確的:

    <a @{if (Model.Id == 18777) { <text>target="_blank" href="XXXX"</text> } }> 
        <img src="@[email protected][0].Filename" width="535" height="385" /> 
    </a> 
    

    當然這不會在所有情況下工作,甚至可能對視環節突破適用於a標籤的樣式(即使沒有鏈接)。

+0

嗨,謝謝!我選擇了@Dark Knight的解決方案,因爲第一個選項似乎是最簡單的選擇,他是第一個回答的,但是非常感謝您的詳細解答;) – Patrick

+0

確定:)順便說一句。你應該知道*除了[接受一個答案](http://meta.stackexchange.com/a/5235/141542)之外,你也可以提出每個有用答案作爲欣賞的標誌。 – poke

+0

完成;)再次感謝 – Patrick