2013-07-27 25 views
0

在ASP.NET MVC視圖試圖顯示列表中的文本,每次顯示一個文本。Json.Encode(Model)返回空

該腳本完成其工作,但由於某種原因,轉換列表轉換爲JSON對象失敗。列表對象以正確的值來到一個視圖,但轉換嘗試返回一個空的JSON對象。

查看:

@model List<WebSiteUpravitelj.Models.BlogModels.Objava> 

<a href="/Blog/Objave"> 
<div> 

<h2>Novosti</h2> 

@if (Model != null) 
{ 
<script> 
    $(document).ready(
     function() { 
     var list = "@Html.Raw(Json.Encode(Model))";    
      for (var i = 0; i < 2; i++) 
      { 
       $('#spinNaslov').slideUp(300).delay(800).fadeIn(400).text(list[i].Naslov); 
       $('#spinBloger').delay(400).fadeIn(200).text(list[i].Korisnik + ', ' + list[i].Datum); 
      }    
     }); 
    </script> 
    <div id="novostiSpin"> 
     <h2 id="spinNaslov" style="text-align:center; color:#fed8e6;"></h2> 
     <span id="spinBloger" style="float:right; color:#999898; padding:5px;"></span> 
    </div><br />  

} 
else 
{ 
    <p>Trenutno nema novih objava u novostima.</p> 
} 

</div> 
</a> 

控制器:

public ActionResult _Novosti() 
    { 
     List<Objava> oList = Objava.Novosti(); 
     return PartialView(oList); 
    } 

型號

public class Objava:List<Objava> 
{ 
    public int id { get; set; } 
    public string Naslov { get; set; } 
    public string Datum { get; set; } 
    [AllowHtml]//System.Web.Mvc; 
    public string Sadrzaj { get; set; } 
    public string Korisnik { get; set; } 
} 

我想我做錯了什麼,但我真的不知道是什麼。

請幫忙。

+0

如果你編碼爲JSON,沒有理由用雙引號包裝它。所以,'var list =「@ Html.Raw(...);''變成簡單的'var list = @ Html.Raw(...);' –

+0

感謝您的回覆, 我試過了上面的但隨後VS給我語法錯誤;在@ Html.Raw(Json.Encode(Model));或者如果我刪除,則在下一行; – boris

+0

嘗試使用'@(Html.Raw(json.Encode(model)))'或將其分配給像'String listJSON = Json.Encode(Model)''然後使用'var list = @listJSON;' - For記錄中,我確實得到了Razor對我說'';'但是他們通常是我可以忽略的錯誤,因爲生成的HTML正確輸出。 –

回答

0

問題解決了,問題出現在模型中。 Model Objave繼承了List,因此在創建列表時每次在對象中插入List的Property屬性爲空。從那裏空的JSON對象。轉換爲JSON時,其他屬性(具有值)將被忽略。解決方案中,我刪除了基本列表並創建了用於創建列表的靜態方法。現在一切正常。謝謝你的時間