一.创建项目

首先我们来创建一个ASP.NET Application

选择时尚时尚最时尚的MVC,为了使演示的Demo更简单,这里选择无身份验证

二.创建相关类

项目需要引入之前两个类AdmAccessToken和AdmAuthentication以便获取访问令牌,并添加一个名为Translator的控制器方便处理相关的业务

注意需要添加程序集System.Runtime.Serialization

添加一个Language_Codes

 public class Language_Codes{public int Id { get; set; }public string code { get; set; }public string Name { get; set; }}

三.创建数据库上下文类

首先我们需要引入Entity Framework框架,这里使用的是Nuget包管理

添加类CodeEntity,并且让它继承DbContext

public CodeEntity(): base("DefaultConnection"){}public DbSet<Language_Codes> Language_Code{get;set;}}

接下来修改webconfig

<connectionStrings><add name="DefaultConnection" connectionString="server=.;database=LanguageCode;uid=sa;pwd="providerName="System.Data.SqlClient" /></connectionStrings>

在 TranslatorController中添加

CodeEntity dbcontext = new CodeEntity();

这要我们可以获取语言对应的代码了

四.搭建界面

1.修改Index方法

 public ActionResult Index(){List<Language_Codes> list=  dbcontext.Language_Code.ToList();return View(list);}

给TranslatorController的Index添加视图

@model IEnumerable<Translator.Models.Language_Codes>
@{ViewBag.Title = "Index";
}
<table  class ="table table-striped"><tr><td><label>要翻译的文本</label><textarea id="text" class="form-control"   rows="5"></textarea></td><td>将<select id="from" class="form-control"><option value="1">请选择</option>@foreach (var item in Model){<option id="@item.Id" value="@item.code">@item.Name</option>}</select>翻译成<select id="to" class="form-control"><option value="1">请选择</option></select><button id="submit" class="btn btn-default">翻译</button></td><td><label>翻译的文本</label><textarea id="transtext" class="form-control" rows="5"></textarea></td></tr></table>在layout.cshtml中添加
1   <div class="navbar-collapse collapse">
2                 <ul class="nav navbar-nav">
3                     <li>@Html.ActionLink("主页", "Index", "Home")</li>
4                     <li>@Html.ActionLink("关于", "About", "Home")</li>
5                     <li>@Html.ActionLink("联系方式", "Contact", "Home")</li>
6                     <li>@Html.ActionLink("翻译", "Index", "Translator")</li>
7                 </ul>
8             </div>

效果如下


五.利用AJAX动态加载数据

1.加载LanguageCode
首先在控制器中添加一个LoadLanguageCode来处理加载语言代码请求

 public ActionResult LoadLanguageCode(int id){List<Language_Codes> list = dbcontext.Language_Code.Where(c=>c.Id!=id).ToList();return Json(list);}

在Scripts文件夹添加一个translator.js文件,并在视图中添加此文件的引用<script src="~/Scripts/translator.js"></script>给第一个select注册一个事件,每次select中选项更改时我们去加载第二个select的选项document.getElementById("from").οnchange=function()    {        var selectedid = $(":selected","#from").attr("id");        $.ajax(            {                url: "../Translator/LoadLanguageCode",                type: "post",                data: { id: selectedid },                success: function (_JsonData)                {                    $('#to').empty();                    for (var i = 0; i < _JsonData.length; i++) {                        $('#to').append($('<option' + '  id=' + _JsonData[i].Id + '  value=' + _JsonData[i].code + '>' + _JsonData[i].Name + '</option>'));                    }                }            })    }2.向microsoft请求服务在TranslatorController添加 Translate方法
 [HttpPost]public ActionResult Translate(string from,string to,string text){AdmAuthentication adm = new AdmAuthentication("zuin", "Ursm3pji3Fcha+70plJFrAbHT/Y00F7vyKdXlWLusmc=");//string text = textBox1.Text;//string from = "zh-CHS";//"zh-CHS"//string to = "en";string uri = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text=" + System.Web.HttpUtility.UrlEncode(text) + "&from=" + from + "&to=" + to;string authToken = "Bearer" + " " + adm.token.access_token;HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);httpWebRequest.Headers.Add("Authorization", authToken);WebResponse response = null;try{response = httpWebRequest.GetResponse();using (Stream stream = response.GetResponseStream()){System.Runtime.Serialization.DataContractSerializer dcs = new System.Runtime.Serialization.DataContractSerializer(Type.GetType("System.String"));string translation = (string)dcs.ReadObject(stream);return Json(translation);}}catch{string code = "fail";return Json(code);}}给“翻译”按钮注册事件
  $('#submit').click( function (){var formvalue =$("#from").val();var tovalue = $("#to").val();var textvalue = $("#text").val();$.ajax({url: "../Translator/Translate",type: "post",data: {from: formvalue, to: tovalue, text:textvalue },success: function (_JsonData) {$('#transtext').empty();if (_JsonData=='fail') {alert("失败!,请联系管理员或使用微软必应在线翻译");}else {document.getElementById("transtext").innerHTML = _JsonData;}}})})

好了 现在可以使用服务了

由于业务很复杂,即使网络很好延迟还是很严重,需要优化下

转载于:https://www.cnblogs.com/zuin/p/5929106.html

在Application中集成Microsoft Translator服务之使用http获取服务相关推荐

  1. Installshield中集成Microsoft Visual C++ 2010 Redistributable

    Installshield中集成Microsoft Visual C++ 2010 Redistributable (2014-02-28 15:14:33) 转载▼ 标签: microsoftvis ...

  2. 跨平台应用集成(在ASP.NET Core MVC 应用程序中集成 Microsoft Graph)

    1 谈一谈.NET 的跨平台 终于要写到这一篇了.跨平台的支持可以说是 Office 365 平台在设计伊始就考虑的目标.我在前面的文章已经提到过了,Microsoft Graph 服务针对一些主流的 ...

  3. 【云原生】Apisix接入Nacos、K8s服务注册中心自动获取服务

    背景 我在K8s中部署了两个使用SpringCLoudK8s框架的微服务,每个服务既暴露了HTTP接口方便测试,也暴露了gRpc接口更接近生产,他们的端口如下所示: 常规功能 上游 我们可以在这里配置 ...

  4. 在laravel5.8中集成swoole组件----用协程实现的服务端和客户端(二)---静态文件如何部署...

    目前,较为成熟的技术是采用laravelS组件,注意和laravel 区别laravelS多了一个大写的S,由于laravelS默认监听5200端口,所以laravel项目要做一些调整 例如: 静态文 ...

  5. 在laravel5.8中集成swoole组件----用协程实现的服务端和客户端(一)

    注意,这种风格的服务端需要swoole4.4以上,这种风格的服务端需要swoole4.4以上,这种风格的服务端需要swoole4.4以上,重要的事情说三遍!!! 服务端 <?php //name ...

  6. 在laravel5.8中集成swoole组件----用协程实现的服务端和客户端(nginx配置篇章)

    laravel项目中的配置  原文出处:https://laravelacademy.org/post/19700.html,感谢原文作者让laravel这款可爱的php框架,进入了高并发的殿堂 如果 ...

  7. 开启 QQ 邮箱 POP3, SMTP 服务和获取服务授权码(密码)

    QQ 邮箱各种服务详细信息 服务类型 服务器地址 端口一 端口二 POP3 pop.qq.com 995 无 SMTP smtp.qq.com 465 587 然而仅仅有以上信息还不够,需要获取服务授 ...

  8. Binder—获取服务

    Binder-获取服务 获取服务 一.BC_TRANSACTION binder_ioctl 二.BR_TRANSACTION 三.BC_REPLY 四.BR_REPLY 五.Client 收到服务句 ...

  9. 开启微软 Outlook 邮箱 POP, IMAP, SMTP 服务和获取服务密码(授权码)

    微软 Outlook 邮箱各种服务详细信息 服务类型 服务器地址 端口 加密方法 POP outlook.office365.com 995 TLS IMAP outlook.office365.co ...

  10. 【转】在无人值守程序(服务)中调用Microsoft Graph

    什么是无人值守程序(服务) 我在此前用了几篇文章分别介绍了在桌面应用程序(控制台),Web应用程序(ASP.NET MVC),以及PowerSehll脚本中如何访问Microsoft Graph,今天 ...

最新文章

  1. 【js基础】理清Object、Object.prototype、Function、Function.prototype
  2. 从职责归属看数据库中关系设计
  3. MybatisPlus代码生成器配置
  4. window git安装 以及 tortoiseGit安装与使用
  5. Delphi WebService 的编写、调试、发布(IIS)、调用
  6. 子弹短信 android,子弹短信精简版
  7. Python面试题解答——第一部分
  8. windows 哪些服务必须打开
  9. 量化中需留意的坑之二
  10. this.fields.get(c) is undefined
  11. 做一个管理者的学习之路--002
  12. node环境配置安装(nvm)
  13. 我为什么关注范冰冰和苍井空
  14. ASP.Net MVC开发基础学习笔记(9):查看详情、编辑数据、删除数据
  15. 新手入门|计算机科普
  16. Window 10 电源高性能模式设置
  17. 本地项目的一个git仓库损坏如何恢复
  18. NDK学习笔记:FFmpeg解压MP34提取音频PCM(swrContext、swr_alloc_set_opts)
  19. 2020-08-21
  20. android 图片占用内存的计算

热门文章

  1. WCF学习 (三)深入认识WCF契约
  2. SSM(Spring+springMVC+MyBatis)框架-springMVC实现图片上传
  3. 用CSS制作细线表格
  4. 技术升级成为Linux运维人前途的魔障,是跟进还是选择被淘汰?
  5. 【通关计划】进入IT培训魔域这个红海,ITbegin为何选择从高校编程教
  6. c#_delegate_异步调用_BeginInvoke
  7. SQL Server 2012 中 SSAS 多维数据浏览器已经废除
  8. ASIHttpRequest startAsynchronous
  9. c++switch实现猜拳_Animate/FLASH如何制作猜拳小游戏(AS3)
  10. [JNI]开发之旅(7)JNI函数中调用java对象的方法