最近在做一些局部刷新的分页工作,一般不使用既成的插件的话,就是在脚本里面重新渲染一个局部的html,把需要局部分页的模块重写一遍,还需要在控制器里再定义一个方法返回所需的局部数据,这种做法相当冗余,所以在这里推荐jTemplates的使用。

jTemplates是一个基于Jquery的js模板引擎插件。该引擎全部代码由JS实现,可以配合AJAX,JSON一起协同工作,模板内容可以用JS代码,实现了活动更新,可以自动从服务器更新模板生成的内容。

需要引用jquery.js和jquery-jtemplates.js两个脚本,可以到jTemplates官网下载,附地址(点击导航栏的“Download”进入下载页,选择所需版本下载即可):

http://jtemplates.tpython.com/

 

直接在我这里也可以下载哦~附链接:jTemplates_0_8_4

 

话不多说,直接贴代码哈~

页面html以及js代码:

 @{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script src="~/Scripts/jquery.js"></script>
<script src="~/Scripts/jquery-jtemplates.js"></script>
<script type="text/javascript">
$(document).ready(function () { debugger;
var val = $("#JsonInfos").val();
var parVal = JSON.parse(val);
var data = {
TotalCount: ,
Lists: parVal,
};
// 设置模板
$("#result").setTemplateElement("templateContainer");
//$("#result").setTemplate('<a href="#" onclick="foo({#var $T})">click me</a>'); // 处理模板
$("#result").processTemplate(data); $('.btnClick').on('click', function () {
var str = $(this).data('name');
alert(str);
});
});
</script>
</head>
<body>
<input id="JsonInfos" type="text" value="@ViewBag.JsonInfos" style="display:none;" />
<div id="result">
</div>
<textarea id="templateContainer" style="display: none;">
<table border="">
<tr>
<td>
姓名
</td>
<td>
年齡
</td>
<td>
时间
</td>
<td></td>
</tr>
{#if $T.Lists != null && $T.Lists.length > 0}
{#foreach $T.Lists as row}
<tr>
<td>
{$T.row.Name}
</td>
<td>
{$T.row.Age}
</td>
<td>
{$T.row.CreateDate}
</td>
<td>
<a href="#" class="btnClick" data-name="{$T.row.Name}">click me</a>
</td>
</tr>
{#/for}
@*{#for i = to $T.Lists.length-}
<tr>
<td>
{$T.Lists[$T.i].Name}
</td>
<td>
{$T.Lists[$T.i].Age}
</td>
<td>
{$T.Lists[$T.i].CreateDate}
</td>
</tr>
{#/for}*@
{#else}
<tr><td colspan="">暂无数据!!</td></tr>
{#/if} </table>
</textarea>
</body>
</html>

Index.cshtml

后台控制器的代码:

 using Newtonsoft.Json;
using System.Collections.Generic;
using System.Web.Mvc; namespace jTemplateTest.Controllers
{
public class jTemplateTestController : Controller
{
// GET: jTemplateTest
public ActionResult Index()
{
List<Info> infos = new List<Info>()
{
new Info {Name = "Tomcat", Age = "", CreateDate = "2017-08-03 10:34:37"},
new Info {Name = "Jerry", Age = "", CreateDate = "2017-08-03 10:34:37"},
new Info {Name = "Mike", Age = "", CreateDate = "2017-08-03 10:34:37"},
new Info {Name = "Jim", Age = "", CreateDate = "2017-08-03 10:34:37"},
new Info {Name = "Merry", Age = "", CreateDate = "2017-08-03 10:34:37"}
};
ViewBag.JsonInfos = JsonConvert.SerializeObject(infos);
return View();
}
} public class Info
{
public string Name { get; set; }
public string Age { get; set; }
public string CreateDate { get; set; }
}
}

jTemplateTestController.cs

我这边数据是从后台传到前台,以json字符串格式传到后台,再接收赋值给data,也可以直接前台写入死数据。

这边引入了Newtonsoft.json的序列化方法,需要引用Newtonsoft.Json.dll(点击可下载)。

/******************************我是可爱的分割线******************************/

jTemplates的教程,包括{#if}{#foreach}{#for}的简单使用的更多相关文章

  1. ABP教程(四)- 开始一个简单的任务管理系统 - 实现UI端的增删改查

    接上一篇:ABP教程(三)- 开始一个简单的任务管理系统 – 后端编码 1.实现UI端的增删改查 1.1添加增删改查代码 打开SimpleTaskSystem.sln解决方案,添加一个“包含视图的MV ...

  2. .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比

    在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy的优势在哪里?和微软的MVC比 ...

  3. RabbitMQ系列教程之一:我们从最简单的事情开始!Hello World(转载)

    RabbitMQ系列教程之一:我们从最简单的事情开始!Hello World 一.简介 RabbitMQ是一个消息的代理器,用于接收和发送消息,你可以这样想,他就是一个邮局,当您把需要寄送的邮件投递到 ...

  4. Tinyhttpd - 超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client(Qt也有很多第三方HTTP类)

    - 2. Tinyhttpd tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Htt ...

  5. IT兄弟连 Java语法教程 数组 使用foreach循环遍历数组元素

    从JDK5之后,Java提供了一种更简单的循环:foreach循环,也叫作增强for循环,这种循环遍历数组和集合更加简洁.使用foreach循环遍历数组和集合元素时,无需获得数组或集合的长度,无需根据 ...

  6. 【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识

    第38章      TFTP简单文件传输基础知识 本章节为大家讲解TFTP(Trivial File Transfer Protocol,简单文件传输协议)的基础知识,方便后面章节的实战操作. (本章 ...

  7. 【RL-TCPnet网络教程】第33章 SMTP简单邮件传输协议基础知识

    第33章      SMTP简单邮件传输协议基础知识 本章节为大家讲解SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)的基础知识,方便后面章节的实战操作. (本 ...

  8. ASP.NET Aries 入门开发教程2:配置出一个简单的列表页面

    前言: 朋友们都期待我稳定地工作,但创业公司若要躺下,也非意念可控. 若人生注定了风雨飘摇,那就雨中前行了. 最机开始看聊新的工作机会,欢迎推荐,创业公司也可! 同时,趁着自由时间,抓紧把这系列教程给 ...

  9. BI之SSAS完整实战教程4 -- 部署至SSAS进行简单分析

    上一篇已经创建了多维数据集的结构. 接下来我们将多维数据集的架构定义发送到Analysis Services实例,部署到AS上去. 文章提纲 部署和浏览多维数据集 SSMS使用简介 总结 一.部署和浏 ...

随机推荐

  1. OpenCV:使用 随机森林与GBDT

    随机森林顾名思义,是用随机的方式建立一个森林.简单来说,随机森林就是由多棵CART(Classification And Regression Tree)构成的.对于每棵树,它们使用的训练集是从总的训 ...

  2. Linux命令小记

    以下说法都是基于普通用户的角度,如果是root,可能会有不同. (1)rm -r或-R选项:递归删除目录及其内容(子目录.文件) rm默认无法删除目录,如果删除空目录,可以使用-d选项.如果目录非空, ...

  3. react基础篇六

    创建 Refs 使用 React.createRef() 创建 refs,通过 ref 属性来获得 React 元素.当构造组件时,refs 通常被赋值给实例的一个属性,这样你可以在组件中任意一处使用 ...

  4. 递归删除List元素

    public List<Redenvelope> DeleteList(List<Redenvelope> list) { foreach (var item in list) ...

  5. 团体程序设计天梯赛-练习集-L1-041. 寻找250

    L1-041. 寻找250 对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字. 输入格式: 输入在一行中给出不知道多少个绝对值不超过1000的整数,其中 ...

  6. 洛谷 P1059 明明的随机数

    题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了NNN个111到100010001000之间的随机整数(N≤100)(N≤100)(N≤100),对于其中重复 ...

  7. Oracle 解决表死锁

    select 'alter system kill session ''' || SID || ',' || SERIAL# || ''';' from ( select distinct a.sid ...

  8. Linux之浅谈VIM常见用法及原理图

    本次归纳以强大的VIM文本处理工具常见用法去展开论述. 文本编辑种类:       行编辑器:sed       全屏编辑器:nano,vi        vim - Vi改进 其他编辑器:     ...

  9. 07.网络编程-2.UDP

    1.udp介绍 UDP --- 用户数据报协议, 是一个无连接的简单的面向数据报的传输层协议. UDP不提供可靠性, 它只是把应用程序传给IP层的数据报发送出去, 但是并不能保证它们能到达目的地. 由 ...

  10. tween.js缓动(补间动画)

    一.理解tween.js 如果看到上面的已经理解了,可以跳过下面的部分.下面为对Tween.js的解释 下面就介绍如何使用这个Tween了,首先b.c.d三个参数(即初始值,变化量,持续时间)在缓动开 ...