当前位置: 首页 > news >正文

ASP.NET-常用控件总结

一、ASP.NET基础控件

1、asp:TextBox (输入框)

ASP.NET TextBox 控件用于接收用户输入。

<asp:TextBox ID="txtInput" runat="server"></asp:TextBox>

2、asp:DropDownList (下拉框)

ASP.NET DropDownList 控件用于提供一个下拉列表供用户选择。

<asp:DropDownList ID="ddlOptions" runat="server"><asp:ListItem Text="Option 1" Value="1"></asp:ListItem><asp:ListItem Text="Option 2" Value="2"></asp:ListItem><asp:ListItem Text="Option 3" Value="3"></asp:ListItem>
</asp:DropDownList>

3、asp:Panel (面板)

ASP.NET Panel 控件用于将一组控件组织在一起,并可以通过控件的 Visible 属性来控制它们的可见性。

<asp:Panel ID="pnlContainer" runat="server"><!-- 在这里放置需要组织的控件 -->
</asp:Panel>

4、asp:Button (按钮)

ASP.NET Button 控件用于触发服务器端事件。

<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />

5、asp:Label (文本)

ASP.NET Label 控件用于在页面上显示文本。

<asp:Label ID="lblMessage" runat="server" Text="Welcome!" />

6、asp:CheckBox (复选框)

ASP.NET CheckBox 控件用于在页面上显示一个复选框。

<asp:CheckBox ID="chkAgree" runat="server" Text="I agree to the terms and conditions" />

7、asp:RadioButton (单选按钮)

ASP.NET RadioButton 控件用于在页面上显示单选按钮。

<asp:RadioButton ID="rbOption1" runat="server" Text="Option 1" GroupName="options" />
<asp:RadioButton ID="rbOption2" runat="server" Text="Option 2" GroupName="options" />

8、asp:HyperLink (超链接)

ASP.NET HyperLink 控件用于在页面上显示超链接。

<asp:HyperLink ID="hypGoogle" runat="server" NavigateUrl="http://www.google.com" Text="Go to Google" />

9、asp:Image (图片)

ASP.NET Image 控件用于在页面上显示图片。

<asp:Image ID="imgLogo" runat="server" ImageUrl="~/Images/logo.png" AlternateText="Logo" />

二、ASP.NET实现页面局部刷新

ASP.NET的数据绑定事件触发会刷新所有控件,导致一个表单的填写内容丢失。为了避免这个实际开发中经常遇到的问题,ASP.NET提供了局部刷新的UpdatePanel 控件,用于实现局部页面刷新,而不必重新加载整个页面。使用方法很简单,我们把需要刷新的内容放在 asp:UpdatePanel 标签的里面,不需要刷新的放在标签外面即可。

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="updPanel" runat="server"><ContentTemplate><!-- 这里放置需要局部刷新的控件 --></ContentTemplate>
</asp:UpdatePanel>
<!-- 不需要局部刷新的控件放在外面 -->

三、ASP.NET实现事件绑定

1、前端绑定事件

在ASP.NET中,前端绑定事件是通过在前端页面的控件上直接声明事件处理函数来实现的。例如,可以在前端页面的按钮控件上添加OnClick属性并指定相应的事件处理函数。这样,当用户在浏览器中触发按钮点击事件时,将自动调用该事件处理函数执行相应的操作。

<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
protected void btnSubmit_Click(object sender, EventArgs e)
{// 处理按钮点击事件
}

2、事件的动态绑定

在ASP.NET中,动态事件绑定是通过在代码后台动态创建控件并将事件处理程序与之关联来实现的。例如,在Page_Load事件中动态创建按钮控件,并为其添加点击事件处理函数。当用户与该动态创建的按钮交互时,将调用相应的事件处理函数执行特定操作。

protected void Page_Load(object sender, EventArgs e)
{if (!IsPostBack){Button btnDynamic = new Button();btnDynamic.ID = "btnDynamic";btnDynamic.Text = "Click Me";btnDynamic.Click += new EventHandler(btnDynamic_Click);form1.Controls.Add(btnDynamic);}
}protected void btnDynamic_Click(object sender, EventArgs e)
{// 处理动态创建按钮的点击事件
}

这两种方法都为ASP.NET开发者提供了灵活性和便利性,使其能够根据实际需求选择合适的方式来实现事件绑定和处理。


四、ASP.NET实现数据绑定

1、GridView控件的数据绑定

在ASP.NET中,您可以使用各种控件来绑定和显示数据,例如GridView、ListView、Repeater等。下面是使用GridView控件来显示数据库中数据的示例:

<asp:GridView ID="gvData" runat="server" AutoGenerateColumns="false"><Columns><asp:BoundField DataField="ID" HeaderText="ID" /><asp:BoundField DataField="Name" HeaderText="Name" /><asp:BoundField DataField="Age" HeaderText="Age" /></Columns>
</asp:GridView>
protected void Page_Load(object sender, EventArgs e)
{if (!IsPostBack){BindData();}
}protected void BindData()
{// 假设GetUserData方法从数据库中获取用户数据DataTable dt = GetUserData();gvData.DataSource = dt;gvData.DataBind();
}protected DataTable GetUserData()
{// 实现从数据库中获取数据的逻辑// 这里仅作示例,实际应用中需替换为实际的数据库操作DataTable dt = new DataTable();dt.Columns.Add("ID", typeof(int));dt.Columns.Add("Name", typeof(string));dt.Columns.Add("Age", typeof(int));// 假设从数据库中查询出的数据dt.Rows.Add(1, "Alice", 25);dt.Rows.Add(2, "Bob", 30);dt.Rows.Add(3, "Charlie", 28);return dt;
}

2、DropDownList控件的数据绑定

除了GridView等数据展示表格外,下拉框也可以动态绑定数据。下面是一个DropDownList控件绑定数据的简单示例:

<asp:DropDownList ID="ddlUsers" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlUsers_SelectedIndexChanged">
</asp:DropDownList>
protected void Page_Load(object sender, EventArgs e)
{if (!IsPostBack){BindDropDownList();}
}protected void BindDropDownList()
{// 假设GetUserData方法从数据库中获取用户数据DataTable dt = GetUserData();// 绑定数据到DropDownListddlUsers.DataSource = dt;ddlUsers.DataTextField = "Name"; // 设置显示文本字段ddlUsers.DataValueField = "ID"; // 设置值字段ddlUsers.DataBind();
}protected DataTable GetUserData()
{// 实现从数据库中获取数据的逻辑// 这里仅作示例,实际应用中需替换为实际的数据库操作DataTable dt = new DataTable();dt.Columns.Add("ID", typeof(int));dt.Columns.Add("Name", typeof(string));dt.Columns.Add("Age", typeof(int));// 假设从数据库中查询出的数据dt.Rows.Add(1, "Alice", 25);dt.Rows.Add(2, "Bob", 30);dt.Rows.Add(3, "Charlie", 28);return dt;
}protected void ddlUsers_SelectedIndexChanged(object sender, EventArgs e)
{// 处理下拉列表选中项改变事件string selectedUserId = ddlUsers.SelectedValue;// 根据选中的用户ID执行相应的操作
}

在这个示例中,我们使用DropDownList控件绑定了数据库中的用户数据,并在用户选择不同选项时触发了选中项改变事件,以执行相应的操作。


五、ASP.NET简化开发的控件

ASP.NET 提供了一系列控件来简化用户认证与授权的实现,例如Login、CreateUserWizard、RoleManager等。

1、Login控件

下面是一个简单的示例,展示如何使用Login控件实现用户登录功能:

<asp:Login ID="Login1" runat="server" DestinationPageUrl="~/Welcome.aspx"></asp:Login>
protected void Page_Load(object sender, EventArgs e)
{if (!IsPostBack){if (User.Identity.IsAuthenticated){// 用户已经登录,重定向到欢迎页面Response.Redirect("~/Welcome.aspx");}}
}protected void Login1_LoggedIn(object sender, EventArgs e)
{// 用户成功登录后的处理逻辑
}

这是一个使用ASP.NET Login控件实现用户登录功能的示例。Login控件提供了简单的用户认证功能,用户可以输入用户名和密码登录系统,登录成功后将重定向到指定的欢迎页面。在后台代码中,通过Page_Load事件检查用户是否已经登录,如果已经登录,则直接重定向到欢迎页面。另外,Login1_LoggedIn事件处理程序用于处理用户登录成功后的逻辑,您可以在这里执行一些必要的操作,如记录日志、设置用户会话等。


2. CreateUserWizard控件

CreateUserWizard控件用于简化用户注册过程,包括输入用户名、密码和其他个人信息等。下面是一个简单的示例:

<asp:CreateUserWizard ID="CreateUserWizard1" runat="server" DestinationPageUrl="~/Welcome.aspx"><WizardSteps><asp:CreateUserWizardStep runat="server" /><asp:CompleteWizardStep runat="server" /></WizardSteps>
</asp:CreateUserWizard>
protected void Page_Load(object sender, EventArgs e)
{if (!IsPostBack){if (User.Identity.IsAuthenticated){// 用户已经登录,重定向到欢迎页面Response.Redirect("~/Welcome.aspx");}}
}protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{// 新用户创建成功后的处理逻辑// 您可以在这里添加用户到角色、向数据库中添加用户额外信息等操作
}protected void CreateUserWizard1_ContinueButtonClick(object sender, EventArgs e)
{// 点击继续按钮后的处理逻辑
}

这是一个使用ASP.NET CreateUserWizard控件实现用户注册功能的示例。CreateUserWizard控件提供了简单的用户注册功能,用户可以输入用户名、密码和其他个人信息来注册新用户。在后台代码中,通过Page_Load事件检查用户是否已经登录,如果已经登录,则直接重定向到欢迎页面。CreateUserWizard1_CreatedUser事件处理程序用于处理用户注册成功后的逻辑,您可以在这里执行一些必要的操作,如将新用户添加到角色、向数据库中添加用户额外信息等。CreateUserWizard1_ContinueButtonClick事件处理程序用于处理用户点击继续按钮后的逻辑,您可以在这里执行一些额外的操作或者重定向到其他页面。


3. RoleManager控件

RoleManager控件用于简化角色管理功能,可以轻松地将用户分配到不同的角色,并控制用户在系统中的权限。以下是一个简单的示例:

<asp:RoleManager ID="RoleManager1" runat="server"></asp:RoleManager>
protected void Page_Load(object sender, EventArgs e)
{if (!IsPostBack){if (User.Identity.IsAuthenticated){// 用户已经登录,重定向到欢迎页面Response.Redirect("~/Welcome.aspx");}}
}protected void RoleManager1_RoleAdding(object sender, EventArgs e)
{// 添加角色之前的处理逻辑
}protected void RoleManager1_RoleAdded(object sender, EventArgs e)
{// 角色添加成功后的处理逻辑
}

这是一个使用ASP.NET RoleManager控件实现角色管理功能的示例。RoleManager控件可以帮助您轻松地管理用户角色,包括添加角色、删除角色等操作。在后台代码中,您可以通过事件来处理角色管理过程中的逻辑,如在添加角色之前执行某些操作(RoleManager1_RoleAdding事件)、在角色添加成功后执行某些操作(RoleManager1_RoleAdded事件)等。


六、ASP.NET控件的样式设置

ASP.NET 控件提供了丰富的样式和主题设置选项,使您能够轻松地自定义控件的外观。

以下是一个简单的示例,展示如何通过样式设置控件的外观:

<asp:Button ID="btnSubmit" runat="server" Text="Submit" CssClass="btn-primary" />
.btn-primary {background-color: #007bff;color: #fff;border: none;padding: 10px 20px;border-radius: 5px;
}

在此示例中,我们使用了ASP.NET的Button控件,并通过CssClass属性指定了一个样式类名为btn-primary。然后,在CSS文件中定义了.btn-primary样式,设置了按钮的背景色、文本颜色、边框等属性,以实现按钮外观的定制。通过这种方式,您可以轻松地自定义ASP.NET控件的外观,使其与您的应用程序风格保持一致。


七、ASP.NET控件总结

ASP.NET 控件是开发 Web 应用程序的重要组成部分,提供了丰富的功能和灵活的扩展性。通过本文的介绍,我们了解了 ASP.NET 中一些常用的控件及其使用方法。基础控件如 TextBox、DropDownList、Panel 等用于构建用户界面,实现用户输入和展示数据的功能。而 UpdatePanel 控件则实现了局部刷新,提升了页面的响应速度和用户体验。动态事件的绑定使得我们可以根据程序运行时的状态来动态地为控件添加事件处理程序,增强了应用程序的灵活性和可扩展性。另外,ASP.NET 还提供了一系列简化开发的控件,如 Login、CreateUserWizard、RoleManager 等,帮助开发者快速构建用户认证、授权等功能。最后,在控件样式设置方面,ASP.NET 提供了丰富的选项,使开发者能够轻松地定制控件的外观,与应用程序风格保持一致。综上所述,ASP.NET 控件为开发者提供了丰富的功能和灵活的扩展性,能够满足各种 Web 应用程序的需求,提升开发效率和用户体验。

相关文章:

ASP.NET-常用控件总结

一、ASP.NET基础控件 1、asp:TextBox (输入框) ASP.NET TextBox 控件用于接收用户输入。 <asp:TextBox ID"txtInput" runat"server"></asp:TextBox>2、asp:DropDownList (下拉框) ASP.NET DropDownList 控件用于提供一个下拉列表供用户选择…...

SpringBoot3整合Mybatis-Plus与PageHelper包冲突解决

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; SpringBoot3整合Mybatis-Plus与PageHelper包冲突解决 ⏱️ 创作时间&a…...

MQTT Keep Alive机制

MQTT 协议是承载于 TCP 协议之上的&#xff0c; 而 TCP 协议以连接为导向&#xff0c; 在连接双方之间&#xff0c; 提供稳定、 有序的字节流功能。 但是&#xff0c; 在部分情况下&#xff0c; TCP 可能出现半连接问题。 所谓半连接&#xff0c; 是指某一方的连接已经断开或者…...

基于springboot+vue的游戏交易系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…...

高职(大专)结构化面试之答题思路

目录 一、岗位认知 二、职教热点 三、教育教学 四、人际关系 五、组织管理 六、应急应变 七、时政与教育 八、专业知识 一、岗位认知 考试方向&#xff1a;主要考察对岗位的全面认识、职业目标、职业规划、职业理想。 必背题目&#xff1a; 1.“你为什么要报考我们学校的教师岗…...

Python基础学习笔记(一)

Python简介 Python 语言是一种跨平台、开源、免费、解释型、面向对象、动态数据类型的高级程序设计语言。早期版本的 Python 被称作是 Python1&#xff1b;Python2 最后一个版本是 2.7&#xff1b;Python3 是目前最活跃的版 本&#xff0c;基本上新开发的 Python 代码都会支持…...

机器学习-可解释性机器学习:支持向量机与fastshap的可视化模型解析

一、引言 支持向量机(Support Vector Machine, SVM)作为一种经典的监督学习方法&#xff0c;在分类和回归问题中表现出色。其优点之一是生成的模型具有较好的泛化能力和可解释性&#xff0c;能够清晰地展示特征对于分类的重要性。 fastshap是一种用于快速计算SHAP值&#xff08…...

32.768K晶振X1A000141000300适用于无人驾驶汽车电子设备

科技的发展带动电子元器件的发展电子元器件-“晶振”为现代的科技带来了巨大的贡献&#xff0c;用小小的身体发挥着大大的能量。 近两年无人驾驶汽车热度很高&#xff0c;不少汽车巨头都已入局。但这项技术的难度不小&#xff0c;相信在未来几年里&#xff0c;无人驾驶汽车这项…...

利用autodl服务器跑模型

1. 租用服务器 本地改模型 服务器 将改进好的、数据集处理好的模型压缩为zip文件上传到阿里云盘打开服务器AUTODL服务器&#xff0c;在主页中选择容器实例 在此位置进行开关机操作&#xff0c;若停止服务器&#xff0c;必须关机&#xff0c;不然会一直扣钱 2. 运行模型 选择…...

【微服务】分布式调度框架PowerJob使用详解

目录 一、前言 二、定时任务调度框架概述 2.1 为什么需要定时任务调度框架 2.2 定时任务调度使用场景 三、PowerJob 介绍 3.1 PowerJob 概述 3.2 PowerJob 功能特性 3.3 PowerJob 应用场景 3.4 PowerJob 与其他同类产品对比 四、PowerJob 部署 4.1 PowerJob 架构 4.…...

一命通关广度优先遍历

前言 在这篇文章之前&#xff0c;已对非线性结构遍历的另一种方法——深度优先遍历进行了讲解&#xff0c;其中很多概念词都是共用的。为了更好的阅读体验&#xff0c;最好先在掌握或起码了解dfs的基础上&#xff0c;再来阅读本文章&#xff0c;否则因为会有很多概念词看不明白…...

力扣4寻找两个正序数组的中位数

1.实验内容 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 2.实验目的 算法的时间复杂度应该为 O(log (mn)) 。 3.基本思路 碰到时间复杂度要求log的&#xff0c;肯定用二分查找&…...

jmeter之常用函数-第六天

1.常见函数&#xff1a; _counter 计数器函数 TRUE(每个用户都有自己的计数器) FALSE(所有用户共用一个计数器) _Random 随机数函数 参数1:取值范围最小值(包含) 参数2:取值范围最大值(包含) _time 获取当前时间的函数 无参: 获取的是距离 1970/01/01 00:00:00 的毫秒值 参…...

原创!分解+集成思想新模型!VMD-CNN-BiGRU-Attention一键实现时间序列预测!以风速数据集为例

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 目录 数据介绍 模型流程 创新点 结果展示 部…...

ab (Apache benchmark) - 压力/性能测试工具

Apache benchmark&#xff08;ab&#xff09; 安装window安装使用方法 - bin目录运行使用方法 - 任意目录运行 linux安装 基本命令介绍常用参数:输出结果分析&#xff1a; ab的man手册 安装 window安装 官网下载链接&#xff1a;https://www.apachehaus.com/cgi-bin/download…...

除了Confluence,有没有其他工具一样好用?

每个团队都需要一个协同工作工具&#xff0c;以更有效地管理任务、跟踪进度和分享知识。这就是Atlassian的Confluence发挥作用的地方。然而&#xff0c;尽管它相当强大&#xff0c;其昂贵的价格和复杂的界面可能会让某些用户望而却步。所以&#xff0c;还有其他工具可以替代Con…...

查询表中数据(全列/特定列/表达式,where子句(比较/逻辑运算符),order by子句,limit筛选分页),mysql执行顺序

目录 select 全列查询 特定列查询 用表达式查询 (as) 名字 distinct 去重 where子句 比较运算符 列数据之间的比较 ​编辑 别名不能参与比较 null查询 between and in ( ... , ...) 模糊匹配 逻辑运算符 order by子句 可以使用别名 总结mysql执行顺…...

【Linux】多线程概念 | POSIX线程库

文章目录 一、线程的概念1. 什么是线程Linux下并不存在真正的多线程&#xff0c;而是用进程模拟的&#xff01;Linux没有真正意义上的线程相关的系统调用&#xff01;原生线程库pthread 2. 线程和进程的联系和区别3. 线程的优点4. 线程的缺点5. 线程异常6. 线程用途 二、二级页…...

Java Spring AOP代码3分钟快速入手

AOP Spring入门(十)&#xff1a;Spring AOP使用讲解 - 掘金 maven的依赖&#xff1a; <dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId> </dependency> <!--aspectj支持--> <dependen…...

.NET开源快速、强大、免费的电子表格组件

今天大姚给大家分享一个.NET开源&#xff08;MIT License&#xff09;、快速、强大、免费的电子表格组件&#xff0c;支持数据格式、冻结、大纲、公式计算、图表、脚本执行等。兼容 Excel 2007 (.xlsx) 格式&#xff0c;支持WinForm、WPF和Android平台&#xff1a;ReoGrid。 项…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...

【实施指南】Android客户端HTTPS双向认证实施指南

&#x1f510; 一、所需准备材料 证书文件&#xff08;6类核心文件&#xff09; 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...