asp.net ajax control,ASP.NET AJAX Control 工具集更新

ASP.NET AJAX Control 工具集更新

04/14/2015

3 分钟可看完

本文内容

[原文发表时间] 2015-3-26 3:30 PM

如果你使用ASP.NET AJAX Control Toolkit,你应该知道Visual Studio长期合作伙伴DevExpress一直在维护它,并且它是免费开源的。最近,他们发布了一款被更新和提高了的ASP.net AJAX Control Tooltik.你可以通过 devexpress.com/act ,下载这个新版本。

短时间内他们已经接管了这个项目,并且修复了大部分的重要问题,来确保你的asp.net 应用程序有一个稳定的工具集库。

更新了什么

新的版本包括:

Ø 稳定可用的控件。我们讨论了多个主要的bug跟踪 ,以确保更稳定的控件工具包。

Ø 流行浏览器的支持。上一个版本的asp.net AJAX 控件工具集并不支持所有浏览器。这个版本支持所有流行的html5 浏览器。

Ø 支持Visual studio 2013 Web Form 模板。这个控件工具集现在完全支持 Web Form 模板。你可以使用添加到此模板中的Bootstrap 支持,并且可以同时使用此工具集。

Ø ASP.NET Web 优化框架的支持。你可以使用该工具集和ASP.NET的捆绑缩小功能。从ASP.NET Web Optimization framework获取更多相关知识。

Ø 依赖项清理。Ajax 工具集被分解成一种 只提供必要库的方式。这样,它就不再像AjaxMin,HtmlAgilityPack, 或者WindowAzure 存储那样在库中,所有的第三方包的功能被提取分离(ASP.NET AJAX Control Toolkit.StaticResources, ASP.NET AJAX Control Toolkit.HtmlEditor.Sanitizer)都在NuGet Packages 中可以找到。

Ø 新的安装界面。新的安装体验与Visual Studio 的工具箱中的控件工具集注册组件完美的集成在了一起。

What's New in 1中包括V15.1 发布的新功能全部列表。

6747.clip_image001_thumb_308FFAE4.png

0407.image_thumb_503ED4AC.png

Pranav Ratogi ASP.NET和Azure项目经理

Pranav 在微软ASP.NET 和Azure部门。他拥有Flora 大学硕士学位,他还是Professional ASP.NET 4.5 in C# and VB 的作者之一。作为一个探险者,他很喜欢旅游,现在还可以找到他旅游时的背包。你可以在@rustd 上找到他。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET Core 并不直接支持调用 WinForms 自定义控件,因为 ASP.NET Core 是基于跨平台的开发框架,而 WinForms 是一个基于 Windows 平台的桌面应用程序框架。不过,你可以通过一些技巧来实现在 ASP.NET Core 中使用 WinForms 控件。 一种常见的做法是使用 SignalR 实现实时通信,将 WinForms 控件的 UI 渲染在服务器端,并通过 SignalR 将渲染后的 UI 推送给客户端。这样,客户端就可以通过浏览器访问 ASP.NET Core 应用程序并查看 WinForms 控件的渲染结果。 下面是一个简单的示例,演示如何在 ASP.NET Core 中使用 WinForms 控件: 1. 创建一个 ASP.NET Core Web 应用程序项目。 2. 在项目中添加对 `Microsoft.AspNetCore.SignalR` 的引用。 3. 创建一个名为 `WinFormsService` 的类,用于处理 WinForms 控件的渲染和更新: ```csharp using System; using System.Drawing; using System.Windows.Forms; public class WinFormsService { private readonly HubContext<WinFormsHub> _hubContext; private readonly Control _winFormsControl; public WinFormsService(HubContext<WinFormsHub> hubContext) { _hubContext = hubContext; _winFormsControl = new YourCustomControl(); // 替换为你自己的自定义控件类型 _winFormsControl.Size = new Size(300, 300); _winFormsControl.Paint += WinFormsControl_Paint; } private void WinFormsControl_Paint(object sender, PaintEventArgs e) { // 在控件的绘制事件中渲染 UI,并将渲染结果发送给客户端 using (var bitmap = new Bitmap(_winFormsControl.Width, _winFormsControl.Height)) { _winFormsControl.DrawToBitmap(bitmap, _winFormsControl.ClientRectangle); var imageData = ImageToBase64(bitmap); _hubContext.Clients.All.SendAsync("UpdateWinFormsUI", imageData); } } private string ImageToBase64(Image image) { using (var memoryStream = new MemoryStream()) { image.Save(memoryStream, ImageFormat.Png); var imageDataBytes = memoryStream.ToArray(); return Convert.ToBase64String(imageDataBytes); } } } ``` 4. 创建一个名为 `WinFormsHub` 的 SignalR Hub 类,用于处理客户端的连接和消息: ```csharp using Microsoft.AspNetCore.SignalR; public class WinFormsHub : Hub { public async Task JoinGroup(string groupName) { await Groups.AddToGroupAsync(Context.ConnectionId, groupName); } public async Task LeaveGroup(string groupName) { await Groups.RemoveFromGroupAsync(Context.ConnectionId, groupName); } } ``` 5. 在 `Startup.cs` 文件的 `ConfigureServices` 方法中注册服务: ```csharp public void ConfigureServices(IServiceCollection services) { services.AddSignalR(); services.AddSingleton<WinFormsService>(); } ``` 6. 在 `Startup.cs` 文件的 `Configure` 方法中启用 SignalR 终结点: ```csharp public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // ... app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapHub<WinFormsHub>("/winformsHub"); // SignalR 终结点 endpoints.MapControllers(); }); } ``` 7. 创建一个名为 `WinFormsController` 的控制器,用于处理客户端的请求: ```csharp [Route("api/[controller]")] [ApiController] public class WinFormsController : ControllerBase { private readonly WinFormsService _winFormsService; public WinFormsController(WinFormsService winFormsService) { _winFormsService = winFormsService; } [HttpGet("start")] public IActionResult Start() { // 启动 WinForms 控件渲染 _winFormsService.StartRendering(); return Ok(); } } ``` 8. 在客户端的 HTML 页面中使用 SignalR 连接并接收来自服务器的渲染结果: ```html <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="/winformsHub/hubs"></script> <script> const connection = new signalR.HubConnectionBuilder() .withUrl("/winformsHub") .build(); connection.on("UpdateWinFormsUI", function (imageData) { // 接收来自服务器的渲染结果,并将其显示在页面上 const imageElement = document.getElementById("winformsImage"); imageElement.src = "data:image/png;base64," + imageData; }); connection.start().then(function () { connection.invoke("JoinGroup", "WinFormsGroup"); }); </script> <img id="winformsImage" src="" alt="WinForms UI"> ``` 以上示例中,`WinFormsService` 类负责渲染 WinForms 控件的 UI,并使用 SignalR 将渲染结果推送给客户端。`WinFormsHub` 类是 SignalR 的 Hub 类,用于处理客户端的连接和消息。`WinFormsController` 类是一个 ASP.NET Core 控制器,用于启动 WinForms 控件的渲染。 请注意,上述示例仅为演示目的,实际应用中可能需要根据具体需求进行修改和扩展。此外,这种方法可能会带来一些性能和安全方面的考虑,请根据实际情况进行评估和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值