【翻译】使用Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定

时间:2023-01-11 10:16:55

原文地址:http://www.dotnetjalps.com/2013/05/Simple-data-binding-with-Knockout-Web-API-and-ASP-Net-Web-Forms.html

In this post We are going to see How Knockout, ASP.Net Web API and ASP.Net works together smoothly. There are lots many examples of ASP.Net MVC,Web API and Knockout.js available on web working together  nicely. So I thought it will be a good idea to write a blog post about how ASP.Net Web API, ASP.Net Web Forms,Knockout.js works together and how we can create simple data binding with Knockout.js.

这篇文章我们将见到如何使用 Knockout, ASP.Net Web API and ASP.Net 一起顺利工作。很多例子都是用 ASP.Net MVC, Web API 和 Knockout.js 一起很好地工作。所以我认为这是写关于 ASP.Net Web API, ASP.NET Web Forms, Knockout.js 一起工作并且我们可以使用Knockout.js创建简单数据绑定的博客的好主题

ASP.Net Web Forms:

ASP.Net Web 表单:

As we all know ASP.Net Web Forms is one of premier development technology widely use in creating web sites and web applications. ASP.Net Web Forms allow to create dynamic websites using event driven model. It is one of the easiest way to create web applications and web sites.

我们都知道家ASP.Net Web Forms 是一个建立网站及应用程序的重要开发技术。ASP.Net 允许使用事件驱动模型创建动态网站。它是一个用最简单的方法来创建应用程序和网站。

ASP.Net Web API:

ASP.Net Web API:

ASP.Net Web API is a framework that allows to build HTTP Service that reach a broad range of clients including browsers and mobile devices.It provides very easy way to write restful http services. Its can be access by any type of client over HTTP protocol. Client can make a GET, PUT,POST and DELETE request based on its requirement and get the response appropriately.

ASP.Net Web API 是一个允许建立HTTP服务广泛用于包括浏览器和移动设备的客户端的框架。它提供简单的方法编写RESTful HTTP服务。它可以被所有类型的HTTP 协议的客户端访问。客户端可以跟据需求制定一个GET,PUT,POST 和DELETE 请求并且得到适当的响应。

Knockout JS:

Knockout JS:

As per knockoutjs.com, Knockout is a JavaScript library that helps you to create rich, responsive display and editor user interfaces with a clean underlying data model. It provides a way to declarative bindings using an ‘Observable’ view model on browser. It supports two way bindings.
按照 knockoutjs.com说明,Knockout 是一个JavaScript类库,帮助你使用清晰的数据模型创建一个丰富的响应式显示和编辑用户界面。他提供一种声明’Observable’方法把视图模型绑定在浏览器上。

Getting Started with ASP.Net Web Forms and ASP.Net Web API:

开始使用ASP.Net Web Forms and ASP.Net API:

So let’s get started  first we have to create an empty web forms application in Visual Studio 2012 via File->New Project Menu.

我们开始吧 首先我们在Visual Studio2012创建一个空的Web应用程序。步骤为文件->新建项目。

【翻译】使用Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定

Now once application created we need to add reference to System.Web.Routing as we need to required routing for the ASP.Net Web API.

现在一旦创建应用程序,Web API路由功能要求我们需要添加 System.Web.Routing 引用。

【翻译】使用Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定

Now It’s time to create a model class that we are going to use for Web API. Following a code for that class. It’s very basic as we are just creating sample demo. So I have created class with 3 properties.

现在是时候创建一个模型类型用于WebAPI.以下是这个类的代码。作为刚刚创建的示例这是很基本的。所以为这个类创建了3个属性。

namespace WebApplication1.App_Code
{
public class Employee
{
public int EmployeeId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
}

Now let’s add Web Api Controller Class to create a basic Web API.

现在,让我们为创建的Web API添加Api 控制器类。

【翻译】使用Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定

Now it’s time to write a code for the our ASP.Net Web API Employee Controller and following code I have written for that. here I have created a list of employee and written that in GetEmployeee method.

现在是时候在ASP.Net Web API 员工控制器中写代码,以下是我写好的代码。

这里有我创建的员工清单和写好的GetEmployee方法。

using System;
using System.Collections.Generic;
using System.Web.Http; namespace WebApplication1.App_Code
{
public class EmployeeController : ApiController
{
public List<Employee> Employees = new List<Employee> {
new Employee {EmployeeId=,FirstName="Jalpesh",LastName="Vadgama"},
new Employee {EmployeeId=,FirstName="Vishal",LastName="Vadgama"},
new Employee {EmployeeId=,FirstName="Tushar",LastName="Maru"},
new Employee {EmployeeId=,FirstName="Himanshu",LastName="Patel"},
}; public IEnumerable<Employee> GetEmployees()
{
return Employees;
}
}
}

As now our Web API ready and we need to add a route for our API to handle a request. So let’s first add Global Application Class.

现在我们的Web API准备好了,并且我们需要添加API路由来处理请求。让我们首先添加全局应用程序类。

【翻译】使用Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定

Now in application_start I have written following code to create a route for web api.

现在在application_Start里,我创建了Web API路由,代码如下。

protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
);
}

Here I have just define route as api/controller so our URL will like this. http://localhost/api/employee
这里有刚才定义的 api/controller 路由。所以我们的URL将会象这样。http://localhost/api/employee

So now our API is almost ready. So It’s time to add scripts that we are going to use via NuGet package. We need to two script files jQuery for initial handling and making ajax calls and knockoutjs for bindings.

所以现在我们的API差不多装备好了。是时候通过NuGet包添加脚本了。我们需要两个JQuery脚本进得初始处理并且绑定AJAX调用和KnockoutJS。

【翻译】使用Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定

same way for knockout.

Knockout也是同样的方法。

【翻译】使用Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定

So we are ready to write a code calling API from JavaScript and perform binding for the knockout. So let’s first create a empty web form page and then we write some code in that.
所以我们准务写JavaScript 的API调用代码,并且执行Knockout绑定。让我们首先创建一个空白的Web表单和写一些代码。
【翻译】使用Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定

Now first I have included both scripts in default.aspx head tag like following.

现在首先要包含两个脚本在Default.aspx中的Head标签中,像下面这样。

<head runat="server">
<script src="Scripts/jquery-2.0.0.min.js"></script>
<script src="Scripts/knockout-2.2.1.js"></script>
</head>

Then I have written following code for HTML

我编写好的HTML代码如下

<div>
<h1>Knockout demo with asp.net web forms and asp.net webapi</h1>
</div> <table >
<thead>
<tr>
<td>Employee Id</td>
<td>First Name</td>
<td>Last Name</td>
</tr>
</thead> <tbody data-bind="foreach: employees">
<tr >
<td data-bind="text: EmployeeId"></td>
<td data-bind="text: FirstName"></td>
<td data-bind="text: LastName"></td>
</tr>
</tbody>
</table>

Here you can see that I have create a simple HTML table where I have written data-bind attribute to some of the html tags. That is a way of knockout to tell this particular tag id find with text property of td and employee id property.
这里你会看到我创建的简单的HTML表格,在哪里有我写的一些数据绑定属性HTML标签
Then I have written following code for the java script.

然后我写入下面的 JavaScript代码。

var viewModel =
{
employees: ko.observableArray([]),
}
$(document).ready(function () {
$.ajax({
url: "/api/Employee",
contentType: "text/json",
type: "GET",
success: function (data) {
$.each(data, function (index) {
viewModel.employees.push(ToKnockOutObservable(data[index]));
});
ko.applyBindings(viewModel);
},
error: function (data) {
alert("error occured");
}
});
function ToKnockOutObservable(employee) {
return {
EmployeeId: ko.observable(employee.EmployeeId),
FirstName: ko.observable(employee.FirstName),
LastName: ko.observable(employee.LastName),
};
}
});

Here you can see that I have created a view model for employee in JavaScript which is necessary to bind html tags with view model with knockout.js. Here I have created employee as Observable arrays this is one of the ways of detecting changes in collection. You can find more information about at following link.

http://knockoutjs.com/documentation/observableArrays.html
这里你可以看到我创建的员工视图模型的JavaScript脚本,这里必须在Knockout.js使用视图模型进行HTML标签绑定。这里有我创建的用于观察的员工数组,这是在集合中检测变化的一种方法。你可以在下面链接中找到更多的信息。

http://knockoutjs.com/documentation/observableArrays.html

Then document.ready function I have made ajax call to web api and get a data for that and then create a collection of employee model with ToKnockOutObservable function. At the end I have used ko.Applybinding method to apply binding in HTML Tag.
[然后 document.ready 函数有我制造的AJAX调用Web API ,并且在ToKnockOutObservable函数中创建一个员工集合得到数据。]最后,我用ko.Applybinding 方法应用绑定HTML标签。
So we are done with coding let’s run this demo in browser like following. It’s works smoothly..

所以我们完成代码编写,让示例运行在浏览器中如下。它工作顺利..

【翻译】使用Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定

That’s it. Hope you like it. Stay tuned for more..

到此为止。希望你喜欢。更多内容敬请期待..

【翻译】使用Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定的更多相关文章

  1. Knockout&comma; Web API 和 ASP&period;Net Web Forms 进行简单数据绑定

    使用Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定   原文地址:http://www.dotnetjalps.com/2013/05/Simple-da ...

  2. ASP&period;NET Web API和ASP&period;NET Web MVC中使用Ninject

    ASP.NET Web API和ASP.NET Web MVC中使用Ninject 先附上源码下载地址 一.准备工作 1.新建一个名为MvcDemo的空解决方案 2.新建一个名为MvcDemo.Web ...

  3. Web API 2 入门——使用Web API与ASP&period;NET Web窗体(谷歌翻译)

    在这篇文章中 概观 创建Web窗体项目 创建模型和控制器 添加路由信息 添加客户端AJAX 作者:Mike Wasson 虽然ASP.NET Web API与ASP.NET MVC打包在一起,但很容易 ...

  4. 在ASP&period;NET Web API和ASP&period;NET Web MVC中使用Ninject

    先附上源码下载地址 一.准备工作 1.新建一个名为MvcDemo的空解决方案 2.新建一个名为MvcDemo.WebUI的空MVC应用程序 3.使用NuGet安装Ninject库   二.在ASP.N ...

  5. 【ASP&period;NET Web API教程】3 Web API客户端

    原文:[ASP.NET Web API教程]3 Web API客户端 Chapter 3: Web API Clients 第3章 Web API客户端 本文引自:http://www.asp.net ...

  6. ASP&period;NET Web API路由系统:Web Host下的URL路由

    ASP.NET Web API提供了一个独立于执行环境的抽象化的HTTP请求处理管道,而ASP.NET Web API自身的路由系统也不依赖于ASP.NET路由系统,所以它可以采用不同的寄宿方式运行于 ...

  7. Asp&period;Net Web API VS Asp&period;Net MVC

    http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-between-ASP.NET-MVC-and-ASP.NET-W ...

  8. 002&period;Create a web API with ASP&period;NET Core MVC and Visual Studio for Windows -- 【在windows上用vs与asp&period;net core mvc 创建一个 web api 程序】

    Create a web API with ASP.NET Core MVC and Visual Studio for Windows 在windows上用vs与asp.net core mvc 创 ...

  9. Using MongoDB with Web API and ASP&period;NET Core

    MongoDB is a NoSQL document-oriented database that allows you to define JSON based documents which a ...

随机推荐

  1. linux下 html转pdf

    其实很简单的, 在当前文件夹中打开终端, 只需要一个命令就好 wkhtmltopdf test.html test.pdf 这样一个test.html的文件就转为test.pdf 的pdf文件啦!

  2. CSS&lowbar;css sprite原理优缺点及使用

    CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式.它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢 ...

  3. 12&period;Warning &lpar;15714&rpar;&colon; Some pins have incomplete I&sol;O assignments&period; Refer to the I&sol;O Assignment Warnings report for details

    解释:对于一些管脚,缺少了部分描述,需要再添加一些设置,比如current strength,slew rate等: 措施:打开pin plannel界面,在current strength和slew ...

  4. MySQL之终端&lpar;Terminal&rpar;管理MySQL&lpar;转&rpar;

    前言:MySQL有很多的可视化管理工具,比如“mysql-workbench”和“sequel-pro-”. 现在我写MySQL的终端命令操作的文章,是想强化一下自己对于MySQL的理解,总会比使用图 ...

  5. 求n&excl;中含有某个因子个数的方法

    链接 [https://www.cnblogs.com/dolphin0520/archive/2011/04/11/2012891.html]

  6. 改变FileUpload文件上传控件的显示方式,选择文件后自动上传

    一.Aspx页面: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="File ...

  7. 04&colon; 事件驱动、五种I&sol;O操作、I&sol;O多路复用select和epoll

    网络编程其他篇 目录: 1.1 事件驱动 1.2 五种I/O操作 1.3 I/O 多路复用之select.poll.epoll详解 1.1 事件驱动返回顶部 1.什么是事件驱动  定义:就是根据不同事 ...

  8. 关于Cocos2d-x中数组的使用

    1.定义和背景 cocos2d::Vector<T> 是一个封装了动态大小的数组的顺序型容器. 它的元素是连续存储的,cocos2d::Vector<T> 的存储是自动处理的. ...

  9. Train-Alypay-Cloud:蚂蚁大数据平台培训开课通知(第三次)

    ylbtech-Train-Alypay-Cloud:蚂蚁大数据平台培训开课通知(第三次) 1.返回顶部 1. 您好! 很高兴通知您,您已经成功报名将于蚂蚁金服计划在2018年2月28日- 2018年 ...

  10. vue 与原生app的对接交互(混合开发)

    小伙伴们在用vue开发h5项目特别是移动端的项目,很多都是打包后挂载在原生APP上的,那就少不了与原生交互了,我最近就是在坐这个,踩了一些坑,拿出来给大家分享下. 0.通过url传输数据:(一般是在入 ...