2012-10-18 34 views
2

我正在使用代碼第一方法與EF 5.0使用Visual Studio 2012的MVC Web應用程序。 我寫了下面的代碼,以使一個模式窗口出現在一些點:HTML代碼搞亂以下URL

<div id="mod" style="display:none;"> 
    <div id="mod-container"> 
     <div id="mod-close"><img src="~/Content/icons/close.png" title="close" onclick="$('#mod').fadeOut();"/></div> 
     <div id="mod-content"></div> 
    </div> 
</div> 

如果運行正常,exept,圖像<img src="~/Content/icons/close.png" [...] />不能由認爲它的URL,瀏覽器被發現是

http://localhost:49895/Class1/Home/~/Content/icons/close.png 

準確地說,我的div的每個代碼都在之下。如果我把上面的div的我的形象,它與下面的網址正確顯示:

http://localhost:49895/Content/icons/edit.png 

你有一個想法,我把事情搞亂?

EDIT2:例如(後問題得到解決)

這工作:

<img src="~/Content/icons/close.png" title="close" onclick="$('#mod').fadeOut();"/> 
<!-- comment containing a quote ' --> 
<div id="mod" style="display:none;"> 
    <div id="mod-container"> 
     <div id="mod-close"></div> 
     <div id="mod-content"></div> 
    </div> 
</div> 

這不起作用:

<!-- comment containing a quote ' --> 
<div id="mod" style="display:none;"> 
    <div id="mod-container"> 
     <div id="mod-close"></div> 
     <div id="mod-content"></div> 
    </div> 
</div> 
<img src="~/Content/icons/close.png" title="close" onclick="$('#mod').fadeOut();"/> 
+0

您正在使用AJAX調用你的模式與包裹你的src? –

+0

@ Arno2501不,我不是,它實際上與它無關。該模式通過下面的另一個js腳本調用,但刪除它並沒有改變任何東西 –

+0

您是複製/粘貼示例代碼還是手動輸入代碼? – Betty

回答

2

可能是新的Razor 2.0波浪中的錯誤解析,或者你錯過了一個引號或什麼的東西來彌補你的HTML。嘗試使用解析網址

<img src="@Url.Content("~/Content/icons/close.png")" /> 

如果成功則表明剃刀的錯誤,如果沒有的話你的HTML很可能以某種方式打破,但額外的@符號可能是足夠的解析器的更明確的方式踢進來告訴你什麼是錯的。

+0

編輯您的答案:我有一個評論,解析器似乎不喜歡 –

+0

您可以添加註釋到您的示例爲人民未來參考? – Betty

+0

由於某種原因,我對你的答案的編輯已經消失,所以這是一個解析錯誤,但使用'@ Url.Content'是最好的方法 –

1

~是一個asp代碼元素,而不是HTML。因此它不會被HTML呈現。

嘗試@Url.Content

<img src="@Url.Content("~/Content/icons/close.png")" /> 
+2

這實際上是Razor 2.0的一個新功能 - http://www.davidhayden.me/blog/asp.net-mvc-4-the-new-tilde-slash-feature-in-razor-2 – Betty

+0

@Betty有趣的,謝謝。你的回答可能是對的,但我們確定OP使用Razor 2嗎? – podiluska

+0

使用VS2012,所以機會非常高。另外考慮到有問題的div之前的替代波動工作,我毫不懷疑。 – Betty