[翻译]在asp.net 2.0中使用WebParts

电赛移动机器人底盘实战:从硬件驱动到PID控制与传感器融合 在机器人开发与嵌入式系统领域,移动底盘是实现自主导航与任务执行的基础硬件平台。其核心原理在于通过电机驱动与闭环控制算法,将控制指令转化为精确的运动。这项技术的价值在于为上层算法提供了一个稳定、可靠的运动执行载体,是智能车、服务机器人等应用落地的关键。典型的应用场景包括自动巡线、定点导航、环境探索以及各类竞赛中的移动平台任务。本文以电赛热门硬件平台为例,深入剖析了如何利用编码器反馈与PID算法实现精准速度闭环,并探讨了多传感器数据融合以提升系统感知能力的工程实践,为开发者构建鲁棒的移动机器人系统提供了清晰的路 阅读详情
原文地址: http://dotnetslackers.com/articles/aspnet/UsingWebPartsInASPNet20.aspx
[译者改后代码下载]


[翻译]在asp.net 2.0中使用WebParts


原文发布日期:2007.03.01
作者: Abdul Sami
翻译: webabcd


介绍
如果说WebParts是web中一个非酷的效果的话,我想没有人会怀疑。WebParts为我们提供了对页中的对象进行拖拽的功能,它也可以在runtime的时候改变对象的标题、边框样式等。在WebParts出现之前,要实现这个功能是一项令人非常头痛的工作,因为我们必须写大量的JavaScrip,还要把页中每个对象的状态保存到数据库中。


WebParts有两个基本的东东
    ·WebPartManager
    ·WebPart Zones


WebPartManager
WebPartManager用来管理所有的webparts。如果你想在你的web站点中使用webparts就必须要使用WebPartManager。它的作用是提供你在页中进行拖拽的JavaScript代码

WebPart Zones
WebPart Zones中有4个zone
    ·WebPartZone
    ·EditorZone 
    ·CatalogZone 
    ·ConnectionZone


WebPartZone
WebPartZone是webparts里最基本的单位。通过在WebPartZone里放置不同的内容,我们就能够允许用户在页上对其进行拖拽。你可以在你的页上增加一个DropDownList以实现使用不同zone的功能,该DropDownList的选项如下
    ·Browse
    ·Design
    ·Edit
    ·Catalog
    ·Connect

在DropDownList的SelectedIndexChanged事件里粘贴如下代码(这里假设DropDownList的id是“cmbOptions”,WebPartManager的id是“WebPartManager1”)
if  (cmbOptions.SelectedValue  ==   " Design " )
{
  WebPartManager1.DisplayMode 
= WebPartManager.DesignDisplayMode;
}

else   if  (cmbOptions.SelectedValue  ==   " Browse " )
{
  WebPartManager1.DisplayMode 
= WebPartManager.BrowseDisplayMode;
}

else   if  (cmbOptions.SelectedValue  ==   " Catalog " )
{
  WebPartManager1.DisplayMode 
= WebPartManager.CatalogDisplayMode;
}

else   if  (cmbOptions.SelectedValue  ==   " Edit " )
{
  WebPartManager1.DisplayMode 
= WebPartManager.EditDisplayMode;
}

else   if  (cmbOptions.SelectedValue  ==   " Connect " )
{
  WebPartManager1.DisplayMode 
= WebPartManager.ConnectDisplayMode;
}


Browse mode
Browse mode是webparts的默认模式。在Browse mode中虽然我们不能拖拽webpart,但是可以在webpart上看到两个选项,最小化和关闭。最小化一个webpart会显示它的最小化状态,如果选择关闭的话我们就只能在Catalog mode下重新恢复它,稍后我们会讨论它。这里有一个Browse mode下简单的webpart的图例



Design mode
在Design mode中我们就可以在两个webpart对象间进行拖拽了。我这里有两个webpart,分别被命名为“Links”和“Search”。下图示例了把“Links”拖拽到“Search”的情况



Edit Mode
Edit Mode允许你在runtime中编辑webpart。编辑webpart是一个比较深层次的应用,它分为4个类型:Appearance、Behavio、Property和Layout。我们首先来看看如何使用Appearance和LayoutEditorPart


Appearance和LayoutEditorPart
首先在web form上放置一个EditorZone。然后在EditorZone里放置一个AppearanceEditorPart和LayoutEditorPart。运行这个程序,从DropDownList中选择编辑模式。在可用的webpart上单击菜单的编辑按钮。


你会看到如下图所示的显示


你可以在这里改变webpart的标题。我们也可以看到编辑模式下的一些基本选项。镶边类型是边框和标题的样式。镶边状态可以让你设置是否最小化它


PropertyGridEditorPart
通过使用属性编辑器我们可以改变webpart中对象的属性。在我们的例子中将示例如何改变对象的CssClass属性。我们将用与解释AppearanceEditorPart和LayoutEditorPart相同的方法来说明它

在webform上放置一个EditorZone。然后在EditorZone里放置一个PropertyGridEditorPart。为了使用EditorZone我们需要在你的项目里新增一个用户控件。在这个用户控件里放置一个TextBox,然后再把这个用户控件放到web form的webpart里。该用户控件的后置代码如下
string  _cssClass  =   " FrmTxtBox " ;
[WebBrowsable(), Personalizable(
true )]
public   string  CssClass
{
  
get { return _cssClass; }
  
set { TextBox1.CssClass= value; }
}


protected   void  Page_Load(Object sender, EventArgs e)
{
  TextBox1.CssClass 
= CssClass;
}

上面的代码用于改变TextBox的CssClass属性。这个属性可以在webpart的编辑模式中修改,同时我们也可以在runtime的时候改变它。此外我们也给CssClass附加了两个修饰属性
    ·WebBrowsable - 允许webpart在编辑模式中显示用户定义的属性 
    ·Personalizable - 允许属性是可编辑的

现在运行这个页。如果我们设置了WebPartManager为编辑模式的话,就将会看到webpart的菜单选项中出现了编辑按钮。截屏如下


在webpart的菜单中单击编辑按钮,就会看到编辑模式里有一个CssClass属性。截屏如下:


我们可以看到TextBox使用FrmTxtBox作为默认值(样式表的class)。这个样式把边框的颜色定义为黑色。我们现在可以使用不同的样式class,比如我们有一个名为“CustomClass1”的样式class,它定义为没有边框。输入这个值后按OK按钮,你将会看到新的边框样式


使用这种方法我们就可以改变webpart里对象的属性


Catalog mode
Catalog mode给我们提供了在运行时添加和移除webpart的选项。例如,如果我们有一些模块,如天气模块、新闻模块、购物模块和占卜模块等等。如果想在运行时给用户提供显示和隐藏这些模块的选项,我们就可以使用Catalog mode来完成这项任务。


CatalogZone
CatalogZone分为3个类型,分别是PageCatalogPart、DeclarativeCatalogPart和ImportCatalogPart。在webform上增加一个CatalogZone,然后在CatalogZone内添加之前提到的3个类型。当webpart被关闭后我们可以用PageCatalog来帮我们来显示webpart,截屏如下:


PageCatalogPart用于显示被关闭的webpart列表。DeclarativeCatalogPart用于显示该声明下的webpart列表。图例如下:



ImportCatalog
ImportCatalog用来显示导入的webpart列表。我们可以导入扩展名为.WebPart的文件。如果要导出类型为.WebPart的文件你需要在web.config增加如下元素
< webParts  enableExport ="true" ></ webParts >

然后我们有两种方法可以实现导出功能
设置控件的属性ExportMode的值为All。如果你的控件继承自WebPart就可以这么做,代码如下
< aspSample:CustomWebPart  id ="Sample"  runat ="server"  ExportMode ="All"   />

或者在Page_Load里写如下代码
GenericWebPart gwp  =  WebUserControl2_1.Parent;
gwp.ExportMode 
=  WebPartExportMode.All;

通过导入功能我们就可以增加任何webpart了,图例如下



Connect mode
Connect mode允许各个webpart之间可以互相通信。用户可以依照他们的需要在运行时创建他们的连接。这个连接并不是让webpart连接到数据库,而是webpart之间的互相连接。例如,如果有一个webpart里包含一个grid,它要根据用户的输入显示相应的记录,而用户使用的TextBox在另一个webpart里,此时就要使用Connect mode发送数据。

在我们的例子里,我们将在一个页里放置两个webpart。一个负责用户输入,另一个负责显示。在你的web站点里新建两个用户控件,分别命名为“Provider”和“Consumer”,并把它们放到相应的webpart里。在App_Code文件夹里新建一个名为“ITextProvicer”的类。代码如下:
public   interface  ITextToPass
{
  
string GetText();
}

我们会在Provider和Consumer两个用户控件中使用这个接口,以实现在这两个实体之间传送数据

在Provider用户控件里放置一个TextBox,并输入如下后置代码
public  partial  class  ProviderWebPart : System.Web.UI.UserControl, ITextToPass
{  
  [ConnectionProvider(
"TextToPass", "TextProvider")]
  
public ITextToPass GetTextTransferInterface()
  
{
    
return ((ITextToPass)(this));
  }


  
public string GetText()
  
{
    
return TextBox1.Text;
  }

}

你可以看到它实现了我们刚刚创建的ITextToPass接口。通过使用这个接口,我们可以返回用户输入的文本并传递给Consumer用户控件。

下一步在Consumer用户控件里放置一个Label,并在.cs文件里添加如下代码
[ConnectionConsumer( " Text " ,  " TextConsumer " )]
public   void  GetTextTransferInterface(ITextToPass provider)
{
  Label1.Text 
= provider.GetText();
}

现在选择WebPartManager的Connection mode,我们就可以在webpart的菜单上看到“连接”选项


当我们单击了webpart菜单的“连接”的时候,会看到如下图所示的情况


单击“创建提供者连接”,你会看到如下所示。然后从DropDownList里选择“Consumer”选项。


一旦创建完连接,就允许你在“Provider”中输入文本,如下图所示


单击按钮后“Consumer”的Label控件就会显示你输入的值


通过这种方法我们就可以在webpart之间传输数据。


保存页面状态
在运行我们的项目之前,有一个问题就是如何保存不同用户的不同页面状态呢?为了保存用户对页的修改,我们就需要把这些设置保存到数据库里。在我的例子中使用到了注册和登录控件。

首先你要在你的web.config设置验证模式为“Forms”。然后在你的项目中新建一个webform并取名为Login.aspx。拖拽一个Login控件到页上,设置它的DestinationPageUrl属性为Default.aspx。在你的项目中再新建另一个webform,取名为Signup.aspx,拖拽一个CreateUserWizard控件在此页上。如此用户就可以注册和登录了。另外你还要确保SqlExpress服务正在运行中。我们使用asp.net自动在App_Data文件夹内创建的ASPNETDB.mdf为默认数据库。这个数据库已经提供了保存不同用户的不用页设置的相关表和存储过程。其在Visual Studio环境中的截图出示如下


“PersonalizationPerUser”表就用于保存每个用户的不用页设置状态。它将一个序列化的值保存到PageSettings字段里。幸运的是我们不用接触这个表,因为asp.net 2.0给我们提供了必需的API


创建数据库
为了创建一个数据库来保存我们的页设置状态,需要运行“aspnet_regsql.exe”工具。这个工具在本地的/Windows/Framework/v2.0.50727文件夹里。它可以帮助我们创建所需的表和存储过程。该工具向导的截屏如下


该工具会创建如下这些表


最后我们要做的工作就是在web.config里做一些配置。下面将告诉你如何做,基本上就是要确保启动Membership和Profile特性。请注意其中的<Clear />标签,它将移除machine.config中的相应标签。我们还要增加一个连接字符串以指向我们的数据库,我把它命名为“Database1”
< connectionStrings >
 
< clear />
 
< add  name ="LocalSqlServer"  
   connectionString
="data source=127.0.0.1;database=Database1;
   user id=sa ;password=sa"
/>
</ connectionStrings >
< system .web >
 
< compilation  debug ="true" />
 
< authentication  mode ="Forms"   />
 
< membership >
  
< providers >
  
< clear />
  
< add  name ="AspNetSqlMembershipProvider"  
    type
="System.Web.Security.SqlMembershipProvider, System.Web, 
    Version=2.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"

    connectionStringName
="LocalSqlServer"
    applicationName
="/CustomConnections"   />
  
</ providers >
 
</ membership >

 
< profile  enabled ="true"  defaultProvider ="TableProfileProvider" >
  
< providers >
  
< clear />
  
< add  name ="TableProfileProvider"
     type
="Microsoft.Samples.SqlTableProfileProvider"
     connectionStringName
="LocalSqlServer"
     table
="asdspnet_Profile"
      applicationName
="/CustomConnections" />
  
</ providers >
  
</ profile >
</ system.web >


总结
webparts为我们提供了一个在运行时自定义web站点的简单方法。它是从SharePoint中提取出来,并引进到asp.net 2.0中的。我们已经在本文中测试了它的一些基本用法,如使用不同类型的webpart和使用自定义数据库等等。
在asp.net 2.0中使用WebParts 在asp.net 2.0中使用WebParts *在asp.net 2.0中使用WebParts *在asp.net 2.0中使用WebParts *在asp.net 2.0中使用WebParts * 立即下载

相关推荐

海康威视VS互联网大厂:薪资、福利、工作强度全方位对比

本文全面对比了海康威视与互联网大厂在薪资、福利和工作强度等方面的差异。海康威视提供稳定的薪资结构和较低的工作强度,适合追求专业深度的职场人;而互联网大厂则以高薪和快速成长吸引人才,但工作压力较大。文章还分析了职业发展路径和长期价值,帮助求职者做出明智选择。

weixin_29171129的博客 386

.Net 2.0 新功能:WebParts概述

 WebParts概述本质:WebParts把网页隔成了一个一个更小的空间。http://www.3721.com/就是一个WebParts的例子。VS2005控件图  WebPartManager

董浩的专栏 5893

【测试】echo发送和接收TCP/UDP数据包|shell 发送TCP/UDP数据包

目录 通过/dev/tcp、/dev/udp shell给tcp或udp服务发送16进制报文指令 通过/dev/tcp、/dev/udp (https://blog.csdn.net/u010039418/article/details/86251470) 通过/dev/tcp、/dev/udp可以直接在shell脚本中发起tcp、udp连接,方便又高效,平时用于测试啥的还是挺方便的。 直接发送 格式 /dev/udp/ip/port 比如要向本地10001端口发送数据,可以使用 ec.

我的笔记本 1万+

Asp.net 2.0 - Web Parts学习笔记

学.net有一段时间了,也参与过老师的几个课题项目的开发工作,但却比较少接触Asp.net的UI设计,虽然VS2005推出快两年了,但VS2005中新增的一些控件还没有怎么用过,近来闲着没事,就来学着玩下,从MS的网站上下载了些WebCast,一边看一边实践。 MSDN中的对Web Parts的解释:“ASP.NET Web Parts是...

weixin_34109408的博客 278

CPU核心、die和package的区别:从硬件小白到高手的进阶指南

本文深入浅出地解析了CPU核心、Die与Package的核心概念与区别,是硬件爱好者从入门到精通的实用指南。文章从硅晶圆制造讲起,阐述了物理核心与逻辑线程(如超线程技术)的工作原理,并详细介绍了封装(Package)的作用与多Die模块化设计。最后,结合实际应用场景,提供了选购、性能解读与优化调优的实用建议。

pz89012345的博客 201

从jieba分词到BERT-wwm——中文自然语言处理(NLP)基础分享系列(12)

今天是本系列的最后一期,完整代码呈现Huggingface transformers平台上微调BERT-wwm-ext的过程方法。

weixin_49518391的博客 3762

上接[翻译]在asp.net 2.0中使用WebParts

ImportCatalogImportCatalog用来显示导入的webpart列表。我们可以导入扩展名为.WebPart的文件。如果要导出类型为.WebPart的文件你需要在web.config增加如下元素 <webParts enableExport="true"></webParts> 然后我们有两种方法可以实现导出功能设置控件的属...

weixin_34292924的博客 130

YOLO11改进 | 注意力机制 | 添加SimAM注意力机制【全网独家+附完整代码】

yolo11,yolo11改进,yolo11创新,yolo11添加注意力机制

kay_545 1227

asp.net 2.0中使用WebParts

原文地址:http://dotnetslackers.com/articles/aspnet/UsingWebPartsInASPNet20.aspx[译者改后代码下载][翻译]在asp.net 2.0中使用WebParts原文发布日期:2007.03.01作者:Abdul Sami翻译:webabcd介绍如果说WebParts是web中一个非酷的效果的话,我想没有人会怀疑。WebPart

MicroLT技术blog 1042

MinerU 系列教程 | 第二课:快速上手 -- 安装与第一次解析

本篇教程作为的第二课,将带你从零完成 MinerU 的环境搭建、模型下载,并成功运行第一次文档解析。上一课我们从宏观视角认识了 MinerU,本课开始正式动手实践。

weixin_43674738的博客 299

以阿克曼转向车为例对URDF和XACRO文件进行解读

   最近我在古月学院购买了在Gazebo中实现阿克曼转向车的仿真课程,课程资料的阿克曼小车的XACRO文件在Gazebo里加载的时候报了三个错误,在这之前,我没接触过URDF或XACRO文件,本篇文章就以这个阿克曼小车的XACRO文件为例,对URDF或XACRO文件的格式和内容进行解读,期望经过解读和学习,找到错误原因及所在,并解决这三个错误    先来放一下上面右图所示的模型的完整的XACRO文件: <?xml version="1.0"?> <!-- racecar.urdf.x

慕羽★的博客 3700

介绍ASP.NET 2.0 Web Parts框架

介绍ASP.NET 2.0 Web Parts框架 Introducing the ASP.NET 2.0 Web Parts Framework Stephen Walther 微软公司 2004-10 2005-03针对Beta 2的变化进行更新 适用于: ASP.NET 2.0 Beta 2 ASP.NET框架 Web Parts 概要:Web Parts全套控件...

weixin_33963189的博客 82

提升YOLOv8性能:用Swin Transformer替换Backbone的详细实现与分析【YOLOv8】

YOLOv8作为目标检测领域的最新版本,在速度和精度之间取得了良好的平衡。然而,随着计算机视觉任务的复杂性不断增加,YOLOv8的标准主干网络(Backbone)在处理高分辨率图像或多尺度目标时,可能存在一定的局限性。为了进一步提升YOLOv8的性能,我们可以引入Swin Transformer替换其主干网络,以增强模型的全局感知能力和多尺度特征提取能力。本文将详细介绍如何在YOLOv8中用Swin Transformer替换原有的Backbone,提供代码示例,并深入探讨其中的原理和效果。

博客 1716

使用VS2005搭建典型高效的SharePoint开发环境,提高生产效率,包含远程调试,自动部署...

1. 使用VS2005和搭建SharePoint V2 Sp2环境 目前,SharePoint 的最高版本就是SharePoint V2 Sp2,虽然不支持ASP.Net 2.0的WebPart技术,但是可以却支持在WebPart中使用ASP.Net 2.0的其他控件。 所以,如果你还没有升级到Wss 2.0 SP2的,尽快升级吧,毕竟ASP.Net 2.0 还是有不少新的...

122

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Asp.net2.0 - WebParts学习笔记(2):WebPart 之间进行静态通讯的完整示例(附源码)

上一篇介绍了Web Parts基础,如果两个Web Part之间不能通讯,那就相当郁闷的,所以Asp.Net提供了两种方式来使得Web Part之间可以互相通讯,一种是静态通讯方式,另一种时使用ConnectionZone进行动态通讯。(这里所谓的“Web Part通讯”是指多个WebPart中用户控件之间的通讯)。下面是Web Parts直接进行通讯...

weixin_33716941的博客 260

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

如何解决ASP.NET中Web控件不能移动的问题

一、背景 软件版本:Visual Studio 2019 二、步骤 这时就可以随意拖动控件啦!

Mango_yoo的博客 2002

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Design里 无法拖动控件到UI界面

问题描述:以前用Ubuntu11.10,后来升级到12.04后,Design里的控件突然不能拖动到UI界面了 解决办法:sudo apt-get install gnome-shell (若安装失败,则需要更新软件源:sudo apt-get update --fix-missing),然后登陆的时候,选择GNOME登陆,问题解决

zhu_1211的专栏 1606
上一篇: 乐在其中设计模式(C#) - 代理模式(Proxy Pattern)
下一篇: 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)
webabcd
博客等级 码龄17年 28粉丝 911原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值