在一個項目里面,往往總會有一些非?,嵥榱阈堑臄祿?,要將它們都建立一個數據表吧,又覺得太浪費。因為往往都只有一筆數據。存為其它文檔吧,修改什么的又太麻煩。
其實我就是想在數據庫里面存JSON文檔,一方面可以擁有一定的序列,一方面又是String,又可以寫入數據庫里面,可以有無限個序列供我使用,還不用考慮字段的多少。這樣就非常符合我的要求。
例如我在某一個頁面需要記錄到一些電話、EMAIL、網站等信息,而且只有一筆數據,這筆數據可以很方便的修改,那么我在數據庫字段里面存下以下信息:
{TEL:"18924053286",EMAIL:"alexzeng@msn.com",WEB:"http://www.alexzeng.net"}
也許下次我需要存別的數據,我只需用在數據庫里面增加一筆數據。同樣的在string里面存入JSON數據。
{NAME:"類別管理",URL:"/admin/cate/"}
有人說,你為什么不把類似的數據存在WEBCONFIG里面呢?
其實最重要的原因就是不好修改。而且權限也很難設置。
我們需要建立一個類,通過id讀取出數據庫的JSON數據來.
public string ToJson(int id)
{
string s = string.Empty;
var outjson= (from s1 in db.JsonConfigs where s1.JsonConfigId == id select s1).FirstOrDefault();
s = outjson.Json_Config;
return s;
}
在控制器里面,我們需要制作一個部分視圖,把JSON數據呈現到這個視圖里面來。
[ChildActionOnly]
public ActionResult tojson_us()
{
dynamic d = JObject.Parse(ToJson(1));
ViewBag.TEL = d.TEL;
ViewBag.EMAIL = d.EMAIL;
ViewBag.WEB = d.WEB;
return View();
}
視圖的代碼就更容易了:
Layout = null;
}
<p></p>
<ul class="contact">
<li class="fa-envelope-o"><a href="#">@ViewBag.EMAIL</a></li>
<li class="fa-phone">@ViewBag.TEL</li>
<li class="fa-home">
@ViewBag.WEB
</li>
</ul>
當然,也可以使用AJAX對JSON數據進行讀取,寫入網頁里面。但是可以通過后端渲染,為什么需要前端的JS呢?況且,代碼并不比前端復雜。