在一个项目里面,往往总会有一些非常琐碎零星的数据,要将它们都建立一个数据表吧,又觉得太浪费。因为往往都只有一笔数据。存为其它文档吧,修改什么的又太麻烦。
其实我就是想在数据库里面存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呢?况且,代码并不比前端复杂。