主攻ASP.NET MVC4.0之重生:ASP.NET MVC Web API
UserController代码:
- using GignSoft.Models;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net;
- using System.Net.Http;
- using System.Web.Http;
- namespace GignSoft.Controllers
- {
- public class UserController : ApiController
- {
- private readonly GignSoftDataContext context = new GignSoftDataContext();
- public IEnumerable<SysUser> Get()
- {
- return context.SysUser;
- }
- public SysUser Get(int id)
- {
- return context.SysUser.FirstOrDefault(c => c.SysUserID == id);
- }
- public void Put(SysUser sysuser)
- {
- Guid gid = Guid.NewGuid();
- sysuser.SysUserID = gid.GetHashCode();
- context.SysUser.InsertOnSubmit(sysuser);
- context.SubmitChanges();
- }
- public void Post(SysUser sysuser)
- {
- Delete(sysuser.SysUserID);
- context.SysUser.InsertOnSubmit(sysuser);
- context.SubmitChanges();
- }
- public void Delete(int id)
- {
- SysUser sysuser = context.SysUser.FirstOrDefault(c => c.SysUserID == id);
- context.SysUser.DeleteOnSubmit(sysuser);
- context.SubmitChanges();
- }
- }
- }
视图代码:
- @{
- ViewBag.Title = "Index";
- }
- <script type="text/javascript">
- function altRows(id) {
- if (document.getElementsByTagName) {
- var table = document.getElementById(id);
- var rows = table.getElementsByTagName("tr");
- for (i = ; i < rows.length; i++) {
- if (i % == ) {
- rows[i].className = "evenrowcolor";
- } else {
- rows[i].className = "oddrowcolor";
- }
- }
- }
- }
- window.onload = function () {
- altRows('alternatecolor');
- }
- </script>
- <style type="text/css">
- table.altrowstable {
- font-family: verdana,arial,sans-serif;
- font-size: 11px;
- color: #;
- border-width: 1px;
- border-color: #a9c6c9;
- border-collapse: collapse;
- }
- table.altrowstable th {
- border-width: 1px;
- padding: 8px;
- border-style: solid;
- border-color: #a9c6c9;
- }
- table.altrowstable td {
- border-width: 1px;
- padding: 8px;
- border-style: solid;
- border-color: #a9c6c9;
- }
- .oddrowcolor {
- background-color: #d4e3e5;
- }
- .evenrowcolor {
- background-color: #c3dde0;
- }
- </style>
- <html>
- <head>
- <title>用户管理</title>
- <script src="~/Content/Scripts/jquery-1.7.1.js"></script>
- <script src="~/Content/Scripts/knockout-2.1.0.js"></script>
- </head>
- <body>
- <div id="user">
- <table rules="all" class="altrowstable" id="alternatecolor">
- <tr>
- <th>编号</th>
- <th>用户名</th>
- <th>密码</th>
- <th>创建时间</th>
- <th>状态</th>
- <th></th>
- </tr>
- <tbody>
- <tr>
- <td data-bind="text: SysUserID" />
- <td>
- <input type="text" class="textbox long" data-bind="value: LogName" />
- </td>
- <td>
- <input type="text" class="textbox long" data-bind="value: PassWord" />
- </td>
- <td data-bind="text: CreateTime" />
- <td data-bind="text: State" />
- <td>
- <a href="#" data-bind="click: $root.updateContact">修改</a>
- <a href="#" data-bind="click: $root.deleteContact">删除</a>
- </td>
- </tr>
- <tr data-bind="with: addedContact">
- <td>
- <input type="text" class="textbox" data-bind="value: SysUserID" />
- </td>
- <td>
- <input type="text" class="textbox" data-bind="value: LogName" />
- </td>
- <td>
- <input type="text" class="textbox long" data-bind="value: PassWord" />
- </td>
- <td>
- <input type="text" class="textbox" data-bind="value: CreateTime" />
- </td>
- <td>
- <input type="text" class="textbox" data-bind="value: State" />
- </td>
- <td>
- <a href="#" data-bind="click: $root.addContact">添加</a>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <script type="text/javascript">
- function ContactViewModel() {
- self = this;
- self.allContacts = ko.observableArray();
- self.addedContact = ko.observable();
- self.loadContacts = function () {
- $.get("/api/user", null, function (data) {
- self.allContacts(data);
- var emptyContact = { SysUserID: "", LogName: "", PassWord: "", CreateTime: "", State: "" };
- self.addedContact(emptyContact);
- });
- };
- self.addContact = function (data) {
- if (!self.validate(data)) {
- return;
- }
- $.ajax({
- url: "/api/user/",
- data: self.addedContact(),
- type: "PUT",
- success: self.loadContacts
- });
- };
- self.updateContact = function (data) {
- $.ajax({
- url: "/api/user/",
- data: data,
- type: "POST",
- success: self.loadContacts
- });
- };
- self.deleteContact = function (data) {
- $.ajax({
- url: "/api/user/" + data.SysUserID,
- type: "DELETE",
- success: self.loadContacts
- });
- };
- self.validate = function (data) {
- if (data.LogName && data.PassWord && data.State) {
- return true;
- }
- alert("请输入全部完整信息!");
- return false;
- }
- self.loadContacts();
- }
- ko.applyBindings(new ContactViewModel());
- </script>
- </body>
- </html>
使用效果:
参考书本:
ASP.NET MVC 4框架揭秘
代码资料来源:
通过ASP.NET Web API + JQuery创建一个简单的Web应用
通过Knockout.js + ASP.NET Web API构建一个简单的CRUD应用
http://www.cnblogs.com/artech/archive/2012/07/04/Knockout-web-api.html
http://www.cnblogs.com/artech/archive/2012/05/14/web-api-demo.html
主攻ASP.NET MVC4.0之重生:ASP.NET MVC Web API的更多相关文章
- 主攻ASP.NET MVC4.0之重生:ASP.NET MVC使用JSONP
原文:主攻ASP.NET MVC4.0之重生:ASP.NET MVC使用JSONP 原文地址 http://www.codeguru.com/csharp/.net/net_asp/using-jso ...
- 主攻ASP.NET MVC4.0之重生:Asp.Net MVC WebApi OData
1.新建MVC项目,安装OData Install-Package Microsoft.AspNet.WebApi.OData -Version 4.0.0 2.新建WebAPI Controller ...
- 主攻ASP.NET MVC4.0之重生:Jquery Mobile 列表
代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title ...
- 主攻ASP.NET MVC4.0之重生:Jquery Mobile 表单元素
相关代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...
- 主攻ASP.NET MVC4.0之重生:Jquery Mobile 按钮+对话框使用
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 主攻ASP.NET MVC4.0之重生:CheckBoxListHelper和RadioBoxListHelper的使用
在项目中新建Helpers文件夹,创建CheckBoxListHelper和RadioBoxListHelper类. CheckBoxListHelper代码 using System; using ...
- 主攻ASP.NET MVC4.0之重生:MVC Controller修改Controller.tt模版,自动添加版本注释信息
第一步找到MVC 4.0 CodeTemplates 一般路径在:C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Ite ...
- 主攻ASP.NET MVC4.0之重生:上下滑动屏幕动态加载数据
@{ ViewBag.Title = "Index"; } <!DOCTYPE html> <html> <head> ...
- 主攻ASP.NET MVC4.0之重生:使用反射获取Controller的ActionResult
示例代码 public ActionResult TypeOfForName() { Type typeinfo = typeof(CustomerClassController); //typeof ...
随机推荐
- sha1加密算法
public static void main(String[] args) throws UnsupportedEncodingException { /* * 获取jsapi_ticket * * ...
- 第一百七十九节,jQuery-UI,知问前端--按钮 UI-图标
jQuery-UI,知问前端--按钮 UI 学习要点: 1.使用 button 按钮 2.修改 button 样式 3.button()方法的属性 4.button('action', param) ...
- Fibonacci series(斐波纳契数列)的几种常见实现方式
费波那契数列的定义: 费波那契数列(意大利语:Successione di Fibonacci),又译费波拿契数.斐波那契数列.斐波那契数列.黄金切割数列. 在数学上,费波那契数列是以递归的方法来定义 ...
- 转载: vim使用技巧
两篇很牛的vim使用技巧 来源: ChinaUnix博客 日期: 2009.07.06 10:18 (共有条评论) 我要评论 读本文之前请注意:1. 本文的目标是提供一些vim的使用技巧,利用 ...
- git的优秀教程
1.csdn地址:http://blog.csdn.net/qq_15037231/article/details/73864293 2.廖雪峰的git教程 地址:https://www.liaox ...
- mysql UNION all 实现不对称数据统计
当统计多条的三个参数在不同时间段的数据的sum,又只能写在同一个sql上时,可以考虑union all三次查询, select * from ( select kk.a_time as dates,k ...
- Native VLAN打上标记
802.1Q和ISL都知道两者的区别在于前者对native vlan的流量不打标记,而后者统一都打标记. 配置成Native VLAN的Trunk端口,收到Native VLAN的帧后,不打标记直接从 ...
- tsinsen A1333. 矩阵乘法(梁 盾)
A1333. 矩阵乘法(梁 盾) 时间限制:2.0s 内存限制:256.0MB 总提交次数:515 AC次数:211 平均分:54.14 将本题分享到: 查看未格式化 ...
- 安装mysql报错—解决方法:error while loading shared libraries: libssl.so.6
for 32bit ln -sf /usr/lib/libssl.so.10 /usr/lib/libssl.so.6ln -sf /usr/lib/libcrypto.so.10 /usr/lib/ ...
- python多进程理论
什么是进程 进程:正在进行的一个过程或者说一个任务.而负责执行任务则是cpu. 举例(单核+多道,实现多个进程的并发执行): 你在一个时间段内有很多任务要做:python学习的任务,赚钱的任务,交女朋 ...