2013-08-26 97 views
1

美好的一天,我嘗試在我的ASP.NET MVC3項目中使用Url.Action內部@Html.Raw的動作鏈接。一切工作正常,沒有@Html.Raw,但它與圖像無法顯示在頁面上,我嘗試在原始內使用Html.Encode,但它然後顯示我裸頁上的HTML。ASP.NET MVC3鏈接@ Html.Raw中的圖像

@Html.Raw(<a href="@Url.Action("ActionName", "Controller", new {id = 1})" target="_blank"> 
       <img src="@Url.Content("~/Content/Images/simpleImage.png")"/> 
      </a>) 

任何想法,爲什麼它沒有呈現正確的代碼還當我將鼠標懸停在與圖像的地方就彈出了我下面的代碼:sitename.com/Controller/@Url.Action(

我儘量屏蔽「這不是幫助

編輯

這個動作鏈接是數據庫查詢的一部分,我喜歡展示未來:

@Html.Raw(model.FieldWithHtmlCharactersInDatabase) 
+1

如果'一切工作正常,沒有@ Html.Raw,'那麼你爲什麼使用它? – Satpal

+0

,因爲我將此信息添加到數據庫中,並且需要在頁面上顯示 – Rakstit

+0

此@ Html.Display與@ Html.Raw相關? –

回答

1

你需要傳遞的字符串,試試這個

@Html.Raw("<a href='" + @Url.Action("ActionName", "Controller", new {id = 1})' " + target='_blank'> 
       <img src='" + @Url.Content("~/Content/Images/simpleImage.png") " + "/> 
      </a>") 
+0

不好運行 – Rakstit

+0

@Rakstit這個工作很好。請發佈您正在使用的確切代碼,而不是提及一件事,但隨後對其他事情發表評論。 –

1

試試這個,而不是你在哪裏傳遞字符串變量和正確逃離"

@Html.Raw("<a href=\"" + 
    Url.Action("ActionName", "Controller", new {id = 1}) 
    + "\" target=\"_blank\"><img src=\"" + 
    Url.Content("~/Content/Images/simpleImage.png") + "\"/></a>") 

不過我你爲什麼要在這個時候@Html.Raw這會給你同樣的輸出不理解;

<a href="@Url.Action("ActionName", "Controller", new {id = 1})" target="_blank"> 
    <img src="@Url.Content("~/Content/Images/simpleImage.png")" /> 
</a> 

更新

你更新你的問題後,你正試圖從DB串執行剃刀代碼。我建議你看一下StackOverFlow中的一些問題;

ASP.net MVC: Execute Razor from DB String?

Pulling a View from a database rather than a file

請注意,你原來的問題是你想要的東西非常不同。

+0

因爲它是我的數據庫中字符串的一部分,我在@ Html.Raw(model.SomeValue)頁面上顯示 – Rakstit

+0

您的問題中提到了哪裏? –

+0

而你的解決方案不行,不幸的是 – Rakstit

0

下面的代碼:

<img src="@Url.Action("ActionName", "Controller", new {id = 1, width=100, height=100})" alt="" /> 

會產生這樣的輸出:

<img src="Controller/ActionName/1?width=100&amp;height=100" alt="" /> 

你會得到相同的周圍動作助手用生:

<img src="@Html.Raw(Url.Action("ActionName", "Controller", new {id = 1, width=100, height=100}))" alt="" /> 

因此,這必須是一個Razor/MVC中的錯誤。我發現一個(繁瑣和醜陋)的解決方法是這樣的:

@Html.Raw("<img src=\"" + Url.Action("ActionName", "Controller", new {id = 1, width=100, height=100}) + "\" alt=\"\" />") 

希望微軟會解決這個問題。