在開發中,有時我們需要在View層中拿到Model返回的數據並且是一個Json對象,那么我們就可以利用Newtonsoft.Json.JsonConvert.SerializeObject(Model)將Model層反序列化,由於js拿到反序列化的數據后一些特殊字符還需要處理,如:雙引號"反序列化后會變成",所以要將其替換成",str.replace(/"/g,"\""),然后再用js函數JSON.parse將其轉換,就得到一個Json對象
后台C#代碼:
namespace MvcApplication1.Controllers { public class HomeController : Controller { public ActionResult Index() { View_News View_News = new View_News(); List<News> NewsList = new List<News>(); NewsList.Add(new News() { Url = "www.baidu.com", Image = "/Resource/Skin02", Title = "Tom" }); NewsList.Add(new News() { Url = "www.taobao.com", Image = "/Resource/Skin03", Title = "Jim" }); NewsList.Add(new News() { Url = "www.jd.com", Image = "/Resource/Skin04", Title = "Jess" }); View_News.NewsList = NewsList; return View(View_News); } } public class View_News { public List<News> NewsList { get; set; } } public class News { public string Url { get; set; } public string Image { get; set; } public string Title { get; set; } } }
前台代碼:
@model MvcApplication1.Controllers.View_News @{ Layout = null; string str = Newtonsoft.Json.JsonConvert.SerializeObject(Model.NewsList); } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> <script src="~/Scripts/jquery-1.8.2.min.js"></script> <script type="text/javascript"> var picData = {}; var theString = '@(str)'; theString = theString.replace(/"/g,"\""); var temp = JSON.parse(theString); picData.news = temp; console.log(picData); </script> </head>
輸出結果: