在加載頁面時,有時候需要將後臺數據傳到頁面並保存在js中,現在一般都是通過json來操作這些數據,下面通過一個簡單的例子講解一下怎樣實現這個過程。
本例在MVC .NET上實現。
比如後臺有這樣一些數據:
public class 級別模型
{
public long id;
public string name;
public List<級別模型> 下級列表;
public 級別模型()
{
this.下級列表 =new List<級別模型>();
}
}
public static readonly List<級別模型> 級別列表 = new List<級別模型>
{
new 級別模型
{
id = 100,
name = "司令部",
單位列表 = new List<級別模型>
{
new 級別模型
{
id=110,
name = "二級部",
單位列表 = new List<級別模型>
{
new 級別模型
{
id=111,
name="處",
單位列表 = new List<級別模型>()
}
}
},
}
}
};
現在需要將級別列表的數據傳到頁面上 ,我們可以先在Controller的Action裏面這樣寫:
public ActionResult Register()
{
//將數據獲取到 通過JsonConvert序列化 將C#對象轉換成json字符串</span>
ViewData["jsonUser"] = JsonConvert.SerializeObject(級別列表);
return View("Register");
}
上一步我們將後臺數據序列化後通過ViewData傳到頁面,接下來就在頁面上接收並處理。
在頁面上js代碼中,操作如下:
<script type="text/javascript">
$(function(){
var dataUser = "@ViewData["jsonUser"]";
var reg = new RegExp(""", "g"); //創建正則RegExp對象
var data = JSON.parse(dataUser.replace(reg, '"'));
});
</script>
由於是MVC,可以通過Razor語法直接將ViewData傳來的數據賦值給js變量,然後進行處理。在Action進行JsonConvert序列化後傳到js中字符串中會有的雙引號會被解析成" ,因此需要替換一到,而且必須替換成雙引號,JSON.parse才能正確解析成json對象。
這樣就可以把數據傳到頁面上並保存成json數據了。