从angularjs传递参数至Web API
昨天分享的博文《angularjs呼叫Web API》http://www.cnblogs.com/insus/p/7772022.html,只是从Entity获取数据,没有进行参数POST。
今天分享一个例子,是传递参数至Web API来获取数据的。而且数据是存储在SQL中。数表结构是昨晚帮助网友解解决问题列举的:
CREATE TABLE [dbo].[TA]
(
[Aid] NVARCHAR(20),
[Avalue] NVARCHAR(30)
)
GO
INSERT INTO [dbo].[TA] VALUES('A1','A1value')
GO CREATE TABLE [dbo].[TC]
(
[Cid] NVARCHAR(20),
[Cvalue] NVARCHAR(30)
)
GO
INSERT INTO [dbo].[TC] VALUES('C1','C1value'),('C2','C2value'),('C3','C3value')
GO CREATE TABLE [dbo].[TB]
(
[Bid] NVARCHAR(20),
[Aid] NVARCHAR(20),
[Cid] NVARCHAR(20)
) GO
INSERT INTO [dbo].[TB] VALUES ('B1','A1','C1'),('B2','A1','C2'),('B3','A1','C3')
GO
Source Code
还缺少一个存储过程:
CREATE PROCEDURE [dbo].[usp_Cq_SelectByTaKey]
(
@Cid NVARCHAR(20)
)
AS
SELECT a.[Aid],[Avalue],c.[Cid],[Cvalue] FROM [dbo].[TB] AS b
RIGHT JOIN [dbo].[TC] AS c ON (b.[Cid] = c.[Cid])
RIGHT JOIN [dbo].[TA] AS a ON (b.[Aid] = a.[Aid])
WHERE c.[Cid] = @Cid
GO
Source Code
数据库方面准备完毕,接下来是创建model:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace Insus.NET.Models
{
public class Cq
{
private string _Aid;
public string Aid
{
get { return _Aid; }
set { _Aid = value; }
} private string _Avalue;
public string Avalue
{
get { return _Avalue; }
set { _Avalue = value; }
} private string _Cid;
public string Cid
{
get { return _Cid; }
set { _Cid = value; }
} private string _Cvalue;
public string Cvalue
{
get { return _Cvalue; }
set { _Cvalue = value; }
} }
}
Source Code
模型与你的存储过程所SELECT的字段基本上匹配即可。
现在我们要写一个实体,是从程序中获取SQL的数据方法:
public IEnumerable<Cq> QueryResult(Cq cq)
{
sp.ConnectionString = DB.ConnectionString;
sp.Parameters = new List<Parameter>() {
new Parameter("@Cid", SqlDbType.NVarChar,-,cq.Cid)
};
sp.ProcedureName = "usp_Cq_SelectByTaKey";
DataTable dt = sp.ExecuteDataSet().Tables[];
return dt.ToList<Cq>();
}
Source Code
下面是本篇的重点,创建Web API:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Insus.NET.Models;
using Insus.NET.Entities; namespace Insus.NET.Apis
{
public class CqApiController : ApiController
{ [Route("api/CqApi/GetSearchResult")]
[HttpPost]
public IEnumerable<Cq> GetSearchResult(Cq cq)
{
DataEntity de = new DataEntity();
return de.QueryResult(cq);
}
}
}
Source Code
最后我们再实现在前端网页去引用此Web API:
html是这样子的,放置一个文本框,让用户输入参数。一个铵钮,让用户请求或查询数据库。还有把结果呈现在一个tabel中:
<div ng-app="CqApp" ng-controller="CqCtrl">
<input id="Text1" type="text" ng-model="Cid"/>
<input id="Button1" type="button" value="button" ng-click="QuerySearch();"/> <table cellpadding="0" cellspacing="0">
<tr>
<th>Aid</th>
<th>Avalue</th>
<th>Cid</th>
<th>Cvalue</th>
</tr>
<tbody ng-repeat="c in Cqs">
<tr>
<td>{{c.Aid}}</td>
<td>{{c.Avalue}}</td>
<td>{{c.Cid}}</td>
<td>{{c.Cvalue}}</td>
</tr>
</tbody>
</table>
</div>
Source Code
angularjs代码:
var oApp = angular.module('CqApp', [])
oApp.controller('CqCtrl', function ($scope, $http) {
$scope.QuerySearch = function () {
var obj = {};
obj.Cid = $scope.Cid; $http({
method: 'POST',
url: '/api/CqApi/GetSearchResult',
dataType: 'json',
headers: {
'Content-Type': 'application/json; charset=utf-8'
},
data: JSON.stringify(obj),
}).then(function (response) {
$scope.Cqs = response.data;
});
};
});
Source Code
演示:
从angularjs传递参数至Web API的更多相关文章
- [译]ABP框架使用AngularJs,ASP.NET MVC,Web API和EntityFramework构建N层架构的SPA应用程序
本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...
- ABP 教程文档 1-1 手把手引进门之 AngularJs, ASP.NET MVC, Web API 和 EntityFramework(官方教程翻译版 版本3.2.5)含学习资料
本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 转载请注明出处:http://www.cnblogs.com/yabu007/ 谢谢 官方文档分四部分 一. 教程文档 二.ABP 框架 三. ...
- 完成AngularJS with MVC 5, Web API 2项目
经过接近两个月的日夜奋战,完成AngularJS with MVC 5, Web API 2的项目,这也是进入公司以后最大的一个项目,从项目需求.用户Prototype/Demo,招人,开发完成,可谓 ...
- Angularjs 通过asp.net web api认证登录
Angularjs 通过asp.net web api认证登录 Angularjs利用asp.net mvc提供的asp.net identity,membership实现居于数据库的用户名/密码的认 ...
- 前端AngularJS后端ASP.NET Web API上传文件
本篇体验使用AngularJS向后端ASP.NET API控制器上传文件. 首先服务端: public class FilesController : ApiController { //usi ...
- POST多个参数到Web API控制器
交互基于Json的方式打包传递就不介绍了,主要设置请求头为 contentType: "application/json", //必须有 数据位Json格式的字符串,在服务器端定义 ...
- Axios 各种请求方式传递参数(非axios api 请求方式)
get delete 方法较为不同 get请求方式将需要入参的数据作为 params 属性的值,最后整体作为参数传递 delete请求方式将将需要入参的数据作为 data 属性的值,最后整体作为参数传 ...
- 传递多个参数并获取Web API的数据
近段时间学习Web Api觉得非常有意思.默认的路由情况之下,获取数据时,它不必指定Action操作名. 还有另外感想,就是自从学习asp.net MVC之后,加上jQuery,让Insus.NET已 ...
- Web API的参数、多版本和Filter
一.关于API的参数a) Web API在WebApiConfig.cs中配置了路由模板,默认为"api/{controller}/{id}",这与MVC路由模板的区别在于没有{a ...
随机推荐
- Salesforce的基础用户界面定制
Salesforce的用户界面 Salesforce的用户界面易于定制.本文将讲述如何定制: 主菜单和选项卡 自定义按钮和链接 视图列表 页面布局 定制主菜单和选项卡 Salesforce的主菜单默认 ...
- 我的第一个个人博客网站 -> wizzie.top
从去年下半年实习结束,到找到第一个属于自己的工作,我就开始着手搭建自己的网站. 使用阿里云学生服务器,域名,备案解析后,开始设计网站结构和页面布局. 因为临近毕业,网站真的是写的页面怎么多怎么写,所以 ...
- 阿里云 centos7 django + uWSGI+Nginx + python3 部署攻略
centos7+nginx+python3+django+uwsgi配置Django 项目部署 1.租的服务器(选择centos)的话,需要在阿里云后台控制台开放几个端口,克隆一下已开放的端口,t ...
- [20180801]insert导致死锁.txt
[20180801]insert导致死锁.txt --//链接http://www.itpub.net/thread-2104135-2-1.html的讨论,自己有点疏忽了,插入主键相同也会导致死锁. ...
- 使用 PsPing & PaPing 进行 TCP 端口连通性测试
PsPing & PaPing 介绍 通常,我们测试数据包能否通过 IP 协议到达特定主机时,都习惯使用 ping 命令.工作时 ping 向目标主机发送一个 IMCP Echo 请求的数据包 ...
- dell t130服务器安装windowsserver2008R2系统
dell T130服务器系统是可以安装windowsserver2008R2系统. 总共8个USB端口: 后置USB:2个USB 3.0和4个USB 2.0 前置USB:1个USB 2.0和1个USB ...
- python+mongodb+flask的基本使用
最近在做一个设备管理系统的后端,需要用python结合mongodb来实现,查了一下flask框架是比较合适的,自己摸索了好久一步步慢慢实现基本功能. 在程序开始之前请确保mongodb服务是开启的, ...
- January 10th, 2018 Week 02nd Wednesday
No need to have a reason to love you. Anything can be a reason not to love you. 喜欢你,不需要什么理由:不喜欢你,什么都 ...
- while else 结构体(自测)
while else : while循环被break打断,则不执行与while并列的else程序. count = 0 while count <= 5: count = count + 1 i ...
- C语言学习关于数据类型的一些知识点(初学者)
1.整型常量的的前缀:(1)十进制常数无前缀. (2)八进制常数前缀为0,八进制常数无符号. (3)十六进制常数前缀为0X或0x. 注:在程序中是根据前缀来区分各种进制数的.因此在书写常数时不要把前缀 ...