2017-05-15 49 views
0

我在ASP MVC中有以下代碼。我試圖讓模型作爲參數獲取正確的文件夾在js播放音樂。陷入錯誤:模型未定義

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.Name) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Genre) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.ReleaseDate) 
     </td> 
     <td> 
      var model = @Html.Raw(Json.Encode(item.Mp3file)); 
      <button onclick="getLocation(model)">Click me</button> 
     </td> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new { id=item.Id }) | 
      @Html.ActionLink("Details", "Details", new { id=item.Id }) | 
      @Html.ActionLink("Delete", "Delete", new { id=item.Id }) 
     </td> 
    </tr> 
} 

當我點擊'點擊我',我希望JS保存值的變種。所以我創建了我存儲我的mp3文件位置的var模型。當我點擊這個函數getLocation(模型)必須輸入系統。但它不會覆蓋

我在JS

function getLocation(model) { 
var tekst = model; 
console.log(tekst);} 

功能我到底做錯了什麼?

+0

你宣佈在上面@model的查看頁面? – vabii

+0

我可以通過哪種方式調用它? –

回答

1

你必須用「@」來引用您的服務器端代碼:

var model = @Html.Raw(Json.Encode(item.Mp3file)); 
<button onclick="getLocation('@model')">Click me</button> 
+0

如果它是一個簡單的類型,它肯定會工作,但它是一個複雜的模型。出於好奇(我現在無法測試),該語法是否會自動將模型序列化爲JSON?因爲如果不是這樣,這將是不夠的,並且必須使用合適的序列化方法代替。 – ADyson

+0

Html.Raw(Json.Encode(model))將模型序列化爲JSON。 –

+0

那應該可能在你的回答中呢? – ADyson