//MVC  具体方法

//API地址 通过 WebConfig配置
private static string apiAdds = ConfigurationManager.AppSettings["ApiAddress"]; //具体方法
public int AddSelectFlowerBll(string selectProduct, string productName, string productSum,int UserID)
{
try
{
//非空判断
if (!string.IsNullOrEmpty(selectProduct) && !string.IsNullOrEmpty(productName) &&
!string.IsNullOrEmpty(productSum))
{
AssembleFlower aFlower = new AssembleFlower();
aFlower.Name = productName;
aFlower.PriceSum = Convert.ToInt32(productSum);
//添加人为1
aFlower.AssembleMan = UserID;
aFlower.AssembleTime = DateTime.Now;
aFlower.IsDel = ;
List<AssembleMaterial> materialList = new List<AssembleMaterial>();
string[] productArry = selectProduct.Split(';');
for (int i = ; i < productArry.Length - ; i++)
{
string[] flowerArry = productArry[i].Split(',');
AssembleMaterial m = new AssembleMaterial();
m.MaterialID = Convert.ToInt32(flowerArry[]);
m.MaterialCount = Convert.ToInt32(flowerArry[]);
materialList.Add(m); }
string[] strArray = { JsonConvert.SerializeObject(aFlower), JsonConvert.SerializeObject(materialList) }; #region 向后台提交数据
//创建HttpClient对象
Uri uri = new Uri(apiAdds);
HttpClient client = new HttpClient();
client.BaseAddress = uri;
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var jsonStr = JsonConvert.SerializeObject(strArray);
HttpContent cont = new StringContent(jsonStr);
cont.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var returnStr = "";
HttpResponseMessage resp = client.PostAsync("api/SelectFlower/AssembleAdd", cont).Result;//post提交数据,
if (resp.IsSuccessStatusCode)
{
returnStr = resp.Content.ReadAsStringAsync().Result;
}
#endregion return Convert.ToInt32(JsonConvert.DeserializeObject(returnStr));
}
else
{
//空值
return -;
}
}
catch
{
//发生错误
return -;
throw;
}
}
 
//API

[RoutePrefix("api/SelectFlower")]
public class SelectFlowerController : ApiController
{
/// <summary>
/// 获取自选花的类型
/// </summary>
/// <param name="FlowerType"></param>
/// <returns></returns>
[HttpGet]
[Route("GetSelectFlower")]
public DataTable GetSelectFlower(string FlowerType)
{
string sql = string.Format("select * from FlowerMaterial where IsDel=0 and FlowerType=@FlowerType");
SqlParameter parameter = new SqlParameter("@FlowerType", SqlDbType.VarChar, );
parameter.Value = FlowerType;
return DBHelperSQL.QueryDataTable(sql, parameter);
} [HttpPost]
[Route("AssembleAdd")]
public string AssembleAdd([FromBody] dynamic jsonStr)
{
//将前台传过来的值转化为数组
var data = JsonConvert.DeserializeObject<string[]>(jsonStr.ToString());
AssembleFlower aFlower = JsonConvert.DeserializeObject<AssembleFlower>(data[]);
List<AssembleMaterial> MaterialList = JsonConvert.DeserializeObject<List<AssembleMaterial>>(data[]);
List<DBHelperSQL.KeyValue> list=new List<DBHelperSQL.KeyValue>();
list.Add(new DBHelperSQL.KeyValue()
{
Key = "insert into AssembleFlower values(@Name,@PriceSum,@AssembleMan,@AssembleTime,0)",
Value = new SqlParameter[]
{
new SqlParameter("@Name",aFlower.Name),
new SqlParameter("@PriceSum",aFlower.PriceSum),
new SqlParameter("@AssembleMan",aFlower.AssembleMan),
new SqlParameter("@AssembleTime",aFlower.AssembleTime),
}
});
foreach (var material in MaterialList)
{
list.Add(new DBHelperSQL.KeyValue()
{
Key = "insert into AssembleMaterial values(@MaterialID,@MaterialCount,(select top 1 ID from AssembleFlower order by ID desc))",
Value = new SqlParameter[]
{
new SqlParameter("@MaterialID",material.MaterialID),
new SqlParameter("@MaterialCount",material.MaterialCount)
}
});
}
list.Add(new DBHelperSQL.KeyValue()
{
Key = " insert into MyCar values(3,(select top 1 ID from AssembleFlower order by ID desc),1,@UserID,@CreateTime,0)",
Value = new SqlParameter[]
{
new SqlParameter("@UserID",aFlower.AssembleMan),
new SqlParameter("@CreateTime",DateTime.Now)
}
});
return DBHelperSQL.ExecuteSqlTranAndReturn(list).ToString();
}
}

C# asp.net mvc 通过 HttpClient 访问 Web_API的更多相关文章

  1. ASP.NET MVC 提供与访问 Web Api

    ASP.NET MVC 提供与访问 Web Api 一.提供一个 Web Api 新建一个项目,类型就选 "Web Api".我用的是MVC5,结果生成的项目一大堆东西,还编译不过 ...

  2. Angular2中对ASP.NET MVC跨域访问

    应用场景 项目开发决定使用angular2进行前后端分离开发,由我负责后端服务的开发,起初选择的是web api进行开发.对跨域访问通过API中间件+过滤器对跨域访问进行支持.开发一段后,通知需要移植 ...

  3. ASP.NET MVC+Entity Framework 访问数据库

    Entity Framework 4.1支持代码优先(code first)编程模式:即可以先创建模型类,然后通过配置在EF4.1下动态生成数据库. 下面演示两种情形: 1.代码优先模式下,asp.n ...

  4. Asp.Net MVC主项目访问不到分离项目控制器的解决方案

    我在portal主项目外新建一个分离项目,控制器和Model都写在分离项目中,视图层写在portal中. 我更改了命名空间,引用了Dll,还是不能访问到控制器. 找到问题: 最后我发现是主项目port ...

  5. ASP.NET MVC 获取当前访问域名

    var request = filterContext.HttpContext.Request; string url = request.Url.Authority; string function ...

  6. Asp.NET MVC 之 调试访问 webservice 时出现“ 无法找到资源 ”的错误

    问题情景如标题,具体错误如下图: 出现以上情况,是程序将 .asmx 文件按控制器方式解析了,在 RouteConfig.cs 文件的 RegisterRoutes 方法中忽略 .asmx 文件,&q ...

  7. 图文详解远程部署ASP.NET MVC 5项目

    话外篇: 由于感觉自己的机器比较慢,配置不好,所以最近想把之前的项目部署到实验室的服务器上,但是由于常不在实验室,所以在想能不能远程部署.因此今天专门研究了一下具体的过程,下面和大家分享一下.本人新手 ...

  8. 图文详解远程部署ASP.NET MVC 5项目 [转载]

    话外篇: 由于感觉自己的机器比较慢,配置不好,所以最近想把之前的项目部署到实验室的服务器上,但是由于常不在实验室,所以在想能不能远程部署.因此今天专门研究了一下具体的过程,下面和大家分享一下.本人新手 ...

  9. ASP.NET MVC 5项目

    图文详解远程部署ASP.NET MVC 5项目   话外篇: 由于感觉自己的机器比较慢,配置不好,所以最近想把之前的项目部署到实验室的服务器上,但是由于常不在实验室,所以在想能不能远程部署.因此今天专 ...

随机推荐

  1. ActiveMQ队列、主题模式区别

    1.ActiveMQ队列模式如下图,生产者创建消息到消息中间件,再“均分给消费者”. 2.ActiveMQ主题模式如下图,生产者创建消息到消息中间件,消费者会接受到订阅的主题中所有的消息.在主题模式下 ...

  2. Hadoop集群搭建过程中ssh免密码登录(二)

    一.为什么设置ssh免密码登录 在集群中,Hadoop控制脚本依赖SSH来执行针对整个集群的操作.例如,某个脚本能够终止并重启集群中的所有守护进程.所以,需要安装SSH,但是,SSH远程登陆的时候,需 ...

  3. hive-issue-inserting-records-to-partitioned-table

    hive-issue-inserting-records-to-partitioned-table Hi Sam, Recently we upgraded our cluster from HDP2 ...

  4. s:if 判断 s:property

    判断<s:property value="XXX"/> 是否是空字符串 则:<s:if  test=" XXX == ''  ">< ...

  5. 图片转web字体库,如何制作web字体库

    最近项目上用到了很多svg图,设计师经常频繁改版,苦不堪言,于是就想到了把图片转成字体库来使用. 使用图片的缺点: 1. 图片加载速度慢 2. 图片大小固定,无法调节 3. 当代码重构或者图片目录位置 ...

  6. 【安富莱二代示波器教程】第17章 附件B---功能扩展和改进方向

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=45785 第17章      附件B---功能扩展和改进方向   ...

  7. Dubbo支持的协议的详解

    Dubbo支持dubbo.rmi.hessian.http.webservice.thrift.redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的.下面我们就针对Dubbo的每种协 ...

  8. Python函数声明以及与其他编程语言数据类型的比较

    1.函数声明 与其它大多数语言一样 Python 有函数,但是它没有像 C++ 一样的独立的头文件:或者像 Pascal 一样的分离的  interface / implementation 段.在需 ...

  9. [Swift]LeetCode171. Excel表列序号 | Excel Sheet Column Number

    Given a column title as appear in an Excel sheet, return its corresponding column number. For exampl ...

  10. [Swift]LeetCode824. 山羊拉丁文 | Goat Latin

    A sentence S is given, composed of words separated by spaces. Each word consists of lowercase and up ...