昨天分享的博文《》,只是从Entity获取数据,没有进行参数POST。
今天分享一个例子,是传递参数至Web API来获取数据的。而且数据是存储在SQL中。数表结构是昨晚帮助网友解解决问题列举的:
CREATE TABLE [dbo].[TA]( [Aid] NVARCHAR(20), [Avalue] NVARCHAR(30))GOINSERT INTO [dbo].[TA] VALUES('A1','A1value')GOCREATE TABLE [dbo].[TC]( [Cid] NVARCHAR(20), [Cvalue] NVARCHAR(30))GOINSERT INTO [dbo].[TC] VALUES('C1','C1value'),('C2','C2value'),('C3','C3value')GOCREATE TABLE [dbo].[TB]( [Bid] NVARCHAR(20), [Aid] NVARCHAR(20), [Cid] NVARCHAR(20) )GOINSERT INTO [dbo].[TB] VALUES ('B1','A1','C1'),('B2','A1','C2'),('B3','A1','C3')GO
CREATE PROCEDURE [dbo].[usp_Cq_SelectByTaKey]( @Cid NVARCHAR(20))ASSELECT a.[Aid],[Avalue],c.[Cid],[Cvalue] FROM [dbo].[TB] AS bRIGHT JOIN [dbo].[TC] AS c ON (b.[Cid] = c.[Cid])RIGHT JOIN [dbo].[TA] AS a ON (b.[Aid] = a.[Aid])WHERE c.[Cid] = @CidGO
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; } } }}
public IEnumerableQueryResult(Cq cq) { sp.ConnectionString = DB.ConnectionString; sp.Parameters = new List () { new Parameter("@Cid", SqlDbType.NVarChar,-1,cq.Cid) }; sp.ProcedureName = "usp_Cq_SelectByTaKey"; DataTable dt = sp.ExecuteDataSet().Tables[0]; return dt.ToList (); }
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 IEnumerableGetSearchResult(Cq cq) { DataEntity de = new DataEntity(); return de.QueryResult(cq); } }}
Aid Avalue Cid Cvalue { {c.Aid}} { {c.Avalue}} { {c.Cid}} { {c.Cvalue}}
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; }); }; });