百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

采用后端代码方式实现对Html元素封装与输出

xsobi 2024-12-09 18:21 1 浏览

概述

在以浏览器为核心的应用软件开发中,Html元素是绕不开的一个部分,本文采用C#代码对Html元素来进行封装,用于完成对Html元素的输出。其他语言也是一样的实现逻辑!

技术点说明

1、html标签类似xml结构 是标签名 + 属性 + 内部Html构成

2、Html标签三种类型 双标签单标签自闭合标签三种组成

双标签

<p>内容</p>

单标签

<br>

自闭合标签

<input name="UserName" type="text" />

单标签与自闭合标签其实是一样的,通常我们会将比如<br>写成<br />

标签格式

<标签名 属性数组> 内部Html</标签名>

例:

<p id="a1" class="classname" 其他属性1="值"> 内部html</p>

或者

<input id="a1" name="a1" class="classname" 其他属性1="值" />

代码定义

比如 HtmlElemHelper

如下:


说明:

1、Style 值又是由KeyValue结构来完成的,设置Style的时候,将key与value存储起来最后合并最终的属性

2、Class 是由空格分隔出来的字符串组成的,也在最后合并

3、如果是单标签或者自闭标签是没有innerHtml的,只有双标签才有InnerHtml

最终形成Html的过程

无论是哪一种标签类型,都有属性

1、先拼接Style与class 加入到最终的属性

2、合并属性形成列表 存放到标签属性中,使用空格分隔

3、如果是双标签 将转入InnerHtml

4、最后将这几部分合并成最终的html标签

示例

//定义父级编码的Id
HtmlElemHelper htmlParentElemHelper = new HtmlElemHelper("div");
string pId = "";
string curId = GetAttrValue("id", "");
if (!string.IsNullOrEmpty(curId))
{
    htmlParentElemHelper.SetAttr("id", pId);
}

htmlParentElemHelper.SetAttr("class", "AuCtrl AuCtrlCheckBoxGroup");


// 定义父级容器
StringBuilder sbOption = new StringBuilder();

if (Items != null && Items.Count > 0)
{
    if (string.IsNullOrEmpty(Values))
    {
        Values = "";
    }
    String[] arrValue = Values.Split(",");

    foreach (TextValueItem textValueItem in Items)
    {
        string checkedInfo = "";

        foreach (string s in arrValue)
        {
            if (s.Equals(textValueItem.Value))
            {
                checkedInfo = " checked=\"checked\"";
                break;
            }
        }
        
        string item = #34;<input type=\"checkbox\" name=\"{Name}\" value=\"{textValueItem.Value}\" {checkedInfo} title=\"{textValueItem.Text}\" />";
        sbOption.AppendLine(item);
    }
}


//设置内部html
htmlParentElemHelper.SetInnerHtml(sbOption.ToString());

//
Html = htmlParentElemHelper.GetHtml();

说明:

这个用了两次HtmlElemHelper,一个元素的html是另外一个元素的InnerHtml

共创、共享、共赢!

相关推荐

Android Studio 导入项目出现缺失解决

很多朋友安装好Androidstudio后准备试一把,但是导入项目的时候出现错误Cannotfindfile"...../project_name/settings.jar"这个错误是因为导入...

首个安卓12开发者预览版发布:隐私保护升级、更新UI、优化性能

来源:环球网2月20日消息,据engadget报道,来到二月,惯例也是谷歌发布安卓12开发者预览版的时候,以便于让开发者提前查看下一版安卓系统的新属性。谷歌工程副总裁戴夫·波尔克(DaveBurke...

推荐几个非常有用的开发工具之Android Studio插件

我们都知道Eclipse开发Android将在今年年底google不再继续提供相应的开发支持,转而开始强烈发展AndroidStudio,现在我就分享几款能帮助团队提升工作效率的几个Android...

Android Studio下的应用性能优化总结-内存优化

上一篇文章总结的布局优化的问题,如果对布局优化不是很熟悉的,可以看一下AndroidStudido下的应用性能优化总结–布局优化,这周一直筹划总结一下内存优化的问题,因为现在对于应用优化的文章很...

安卓开发之环境搭建「图文教程」 安卓应用开发环境搭建

安卓(Android)是一种基于Linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。接下来开始第一个安卓应用吧!需要用到的软...

Android APP性能测试上篇--启动时长、内存

如图所示,列出了目前app主要的一些性能指标,以及对应使用的测试工具。普遍的app性能测试,主要是以下几类:启动时长、内存、cpu、FPS(app使用的流畅度)、GPU过度渲染、耗电、耗流、cras...

AndroidStudio下的依赖管理 安卓依赖管理

在开发中用第三方库是很常见的事,如何在AndroidStudio下管理这些依赖呢?这就是这篇文章的目的。目录Maven/Ivy仓库依赖Module依赖aar文件依赖jar文件依赖例子完整代码一、Mav...

基于Android的师生学习交流平台:Android课程设计

基于Android的师生学习交流平台(Androidstudio毕业设计,Android课程设计)一、项目介绍系统分为学习资料,作业,师生交流,个人资料四大模块(1)学生端:新用户需要填写真实姓名,...

Android Studio 贴士 - 综述#3 android studios

(点击上方公号,可快速关注)英文原文:http://www.developerphil.com/android-studio-tips-of-the-day-roundup-3注:文中链接皆为国外链接...

Android 11 Developer Preview首次更新发布:修复诸多问题

此前在2月19日,谷歌放出了Android11DeveloperPreview(安卓11开发者预览版),并表示Beta版本将于5月份推出,最终发行版将于2020年Q3面世。如今距离Android...

Android12 支持无线usb调试应用 安卓 usb调试

背景在android12版本中已经支持wifiusb调试了,再也不用查数据线了,下面主要说下连接步骤:1.在开发者启动无线调试...

InstantRun原理--深度剖析AndroidStudio2.0

http://crash.163.com/#news/!newsId=8推荐理由AndroidStudio2.0开始支持InstantRun特性,使得在开发过程中能快速将代码变化更新到设...

集成开发环境Android Studio整合Gemini:可生成、补全代码

IT之家4月9日消息,谷歌近日发布新闻稿,宣布在AndroidStudio中集成Gemini1.0Pro,从而帮助开发人员更快、更好地写出代码。谷歌表示目前相关整合仍处于预览阶段,...

Android studio 最新版本下Gradle的一些配置

当我们把Androidstudio版本更新到Bumblebee版本时,我们会发现创建新的项目时,有了一些改变。项目根目录下面的build.gradle变了:旧版本下的是这样子的:setting.gr...

Android Studio最新版下载安装:Android Studio模拟器怎么启动

目录第一部分:AndroidStudio软件介绍...