2014-09-19 24 views
0

我想用丹麥語字符Html.Raw()如何在Razor中使用JavaScript字符串?

JavaScript item不能用於Razor的Html.Raw(),還是什麼?

錯誤:?「無法解析符號‘項目’

我該如何解決這個

var tbody = ""; 
for (var i = 0; i < result.length; i++) { 
    var item = result[i]; 

    // Titel, Type 
    tbody = tbody + '<tr>' + 
     '<td>' + '@(Html.Raw(item.Title))' + '</td>' + // <-- Cannot resolve symbol 'item' 
     '<td>' + item.Type + '</td>' + 
     + '</tr>'; 
} 
$('#AttachmentTable tbody').append(tbody); 
+6

你不能在服務器端處理剃鬚刀,javascript是客戶端,所以當剃刀渲染頁面時,它對JavaScript代碼一無所知。 – VahidNaderi 2014-09-19 07:12:07

+0

爲什麼你需要'@(Html.Raw(...))'而不要直接使用它 - >你正在寫HTML代碼!如何創建'item.Title':如果這是從服務器端生成的,那麼此時您可以調用'Html.Raw' ... – 2014-09-19 07:15:47

+1

Item.Title包含丹麥字母,如'æøå',其中包含「?」在html中。 – radbyx 2014-09-19 08:01:21

回答

0

這樣可不行先了解頁面的執行過程 在。 chtml page first剃刀引擎將解析整個頁面 然後頁面加載javascript將開始執行

現在在你的場景中同時Razor引擎解析th e頁面,它現在會發現項目,並且會引發錯誤。

我認爲沒有必要使用@(Html.Raw(item.Title))。 直接insted的使用item.Title 所以您的最終聲明將在以下幾點:

tbody = tbody + '<tr>' + 
    '<td>' + item.Title + '</td>' + 
    '<td>' + item.Type + '</td>' + 
    + '</tr>'; 
0

對不起,你不能做到這一點。 Razor引擎首先加載服務器端代碼,然後在客戶端加載JavaScript。嘗試使用AJAX,將您的數據傳遞給控制器​​,然後從底層視圖處理它,假設您使用ASP.NET MVC。 只是爲了澄清,相反是合理的,我的意思是使用剃鬚刀代碼到JavaScript代碼。

編輯: 我不能對你的問題發表意見,所以我編輯我的答案: 你說:「Item.Title包含丹麥字母一樣,給人一種‘æøå’‘’在HTML」 作爲Sujit?帕蒂爾建議,你不需要@ Html.Raw,而是純粹的JavaScript來實現你的目標。所以使用item.Title但是... 您必須在文檔頭中將元字符集設置爲ISO-8859-1。像這樣: <meta charset="ISO-8859-1" />。我已經試過這個,它的工作!

相關問題