动态生成页面(一)——ASP.NET中Literal使用
在页面中加入内容时,假设是静态内容。无需使用容器,能够直接将标记作为HTML直接加入到页面中;可是,假设是动态内容,则必须借助容器将内容加入到页面中。典型的容器有:Label控件、Literal控件、Panel控件和PlaceHolder控件。
一、控件选择:Literal
Literal控件与Lable控件的差别在于,Literal控件不向文本中加入不论什么HTML元素;而Label控件呈现一个span元素。
Panel和PlaceHolder控件呈现为DIV元素。这将在页面上创建离散块,与Lable和Literal控件进行内嵌呈现的方式不同。
由于小编编码过程中须要直接将文本和控件直接呈如今页面中而不是用不论什么附加标记,所以果断选择了Literal控件。
二、用法
将“工具箱”的Literal控件拖拽到要加入动态内容的位置,执行时直接将代码赋给控件的Text属性。
页面代码为:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>动态生成</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Literal ID="ToTable" runat="server"></asp:Literal>
</div>
</form>
</body>
</html>
三、依据数据库表内容创建动态页面
1、业务逻辑:
将列表中“S_Edit_Visible”字段中值为1的字段动态显示在页面上
2、详细代码:
#region ToTable-拼接table表-2015年7月26日
/// <summary>
/// 拼接table表
/// </summary>
/// <param name="model"></param>
public void ToTable(IList<ModelBFieldDef> model)
{
int num,i;
bool evenFlag;
StringBuilder sbTable = new StringBuilder("<table>"); //推断控件的奇偶数
if (model.Count % 2 == 0)
{
evenFlag = true;
}
else
{
evenFlag = false;
} if (evenFlag)
{
num = model.Count / 2;
}
else
{
num = (model.Count - 1) / 2;
} //直接载入偶数个
for (i = 0; i < num; i++)
{
int t = 2 * i;
sbTable.Append("<tr>");
sbTable.Append(soleCombin(model, t, true));
sbTable.Append(soleCombin(model, t + 1, true));
sbTable.Append("<tr>");
} if (!evenFlag)
{
sbTable.Append("<tr>");
sbTable.Append(soleCombin(model, model.Count-1, evenFlag));
sbTable.Append("<tr>");
} sbTable.Append("</table>");
this.HideTable.Text=sbTable.ToString();
}
#endregion #region soleCombin-单个组合控件-2015年7月26日
/// <summary>
/// 单个组合控件
/// </summary>
/// <param name="model">字段实体列表</param>
/// <param name="i">列表的第几行</param>
/// <param name="evenFlag">要载入控件是否两个一行:true。两个一行;false,单个一行</param>
/// <returns></returns>
public string soleCombin(IList<ModelBFieldDef> model,int i,bool evenFlag)
{
StringBuilder sbField = new StringBuilder("");
string Field;
string Type = model[i].SFieldUitype;
switch (Type)
{
case "String": //文本框类型
sbField.Append( "<td class=\"left\" style=\"width: 110px; height: 27px;\">");
sbField.Append(model[i].SFieldNamecn ); //text名称
if (evenFlag)
{
sbField.Append("</td><td class=\"right\" style=\"width: 200px; height: 27px;\"><asp:AdvTextBox ID=\"");
}
else
{
sbField.Append("</td><td colspan=\"3\" class=\"right\" style=\"width: 510px; height: 27px;\"><asp:AdvTextBox ID=\"");
}
sbField.Append(model[i].SFieldName); //TextBox的Id
sbField.Append("\" runat=\"server\" CssClass=\"nTxt\" AttrName=\"");
sbField.Append(model[i].SFieldNamecn); //AttrName
sbField.Append("\" InputType=\""); //假设验证类型为空,则默觉得string类型
if (model[i].SFieldType == null)
{
sbField.Append("string");
}
else
{
sbField.Append(model[i].SFieldType);
}
sbField.Append("\""); //验证是否可为空
if (model[i].SFieldCannull =="1" || model[i].SFieldCannull ==null )
{
sbField.Append("NotNull=\"true\"");
} sbField.Append("MaxLength=\"");
//输入字符串最大长度
if (model[i].SFieldLen == null)
{
sbField.Append("60");
}
else
{
sbField.Append(model[i].SFieldLen);
} sbField.Append("\" Width=\"165px\" Height=\"19px\"></asp:AdvTextBox>"); //验证是否可为空
if (model[i].SFieldCannull == "1" || model[i].SFieldCannull == null)
{
sbField.Append("<a style=\"color: Red; text-decoration: none;\">*</a>");
}
sbField.Append("</td>");
break;
case "CheckBox": //复选框类型
sbField.Append( "<td class=\"left\" style=\"width: 110px; height: 27px;\">");
sbField.Append(model[i].SFieldNamecn); //text名称
//推断是单列还是多列:evenFlag=true 是多列
if (evenFlag)
{
sbField.Append("</td><td class=\"right\" style=\"width: 200px; height: 27px;\"><asp:CheckBox ID=\"");
}
else
{
sbField.Append("</td><td colspan=\"3\" class=\"right\" style=\"width: 510px; height: 27px;\"><asp:CheckBox ID=\"");
}
sbField.Append(model[i].SFieldName); //TextBox的Id
sbField.Append("\" runat=\"server\" />");
break;
case "Radio": //单选框类型(待补)
break;
case "Seclect": //下拉框类型(待补)
break;
case "Date": //日期类型(待补)
break;
default:
break;
} Field = sbField.ToString();
return Field;
}
#endregion
小结:选择何种容器来对动态页面进行载入,要结合实际情况。依据每一个容器的特点来选择。
动态生成页面(一)——ASP.NET中Literal使用的更多相关文章
- (转)asp.net中Literal与label的区别
asp.net中Literal与label的区别 一.Literal Web 服务器控件概述(摘于MSDN) 可以使用 Literal Web 服务器控件作为页面上其他内容的容器.Literal 最常 ...
- Python PageFactory-使用配置文件动态生成页面PageObject
需求 在Python Selenium 的 PageObject模式中,一般每个页面需要写一个类, 一种PageObject的写法如下: class BaiduPageObject(object): ...
- ASP.NET中Literal控件的使用方法(用于向网页中动态添加内容)
原文:https://www.jb51.net/article/82855.htm 可以将 Literal 控件用作网页上其他内容的容器.Literal 控件最常用于向网页中动态添加内容.简单的讲,就 ...
- asp.net中Literal与label的区别
Literal 控件表示用于向页面添加内容的几个选项之一.对于静态内容,无需使用容器,可以将标记作为 HTML 直接添加到页面中.但是,如果要动态添加内容,则必须将内容添加到容器中.典型的容器有 La ...
- sitemap.xml 静态和动态生成页面 shopnc二次开发 动态生成sitemap.xml
Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页.最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间.更改的 ...
- ASP.NET中Literal,只增加纯粹的内容,不附加产生html代码
页面代码 <div style="float: right; color: #666; line-height: 30px; margin-right: 12px;" id= ...
- 动态生成web表-asp.net table
1. 页面上定义一个server 的table <table style="width: 100%" id="tbContent" runat=" ...
- 通过js动态生成页面表格
var redlineTemplateP = $(".redlineDataList"); for (var index in detailArraryLists.rows){ v ...
- Javascript动态生成的页面信息爬取和openpyxl包FAQ小记
最近,笔者在使用Requests模拟浏览器发送Post请求时,发现程序返回的html与浏览器F12观察到的略有不同,经过观察返回的response.text,cookies确认有效,因为我们可以看到返 ...
随机推荐
- vue工厂化完整项目目录
- vim 删除单个单词,cc和dd关系
c 功能和d相同,区别在于完成删除操作后进入INSERT MODE cc 也是删除当前行,然后进入INSERT MODE 删除每行第一个字符 :%s/^.//g ...
- 面试之Spring
一.IoC IoC(Inversion of Control):控制反转(是把传统上由程序代码直接操控的对象的生成交给了容器来实现, 通过容器来实现对象组件的装配和管理.所谓"控制反转&qu ...
- bootstrap-table的一些基本使用及表内编辑的实现
最近工作需要接触了bootstrap-table 所以研究了一下,并做了笔记,红色位置要特别注意 前端主要使用了 jquery bootstrap-table bootstrap-edittable ...
- C#线程锁使用全功略
C#线程锁使用全功略 前两篇简单介绍了线程同步lock,Monitor,同步事件EventWaitHandler,互斥体Mutex的基本用法,在此基础上,我们对 它们用法进行比较,并给出什么时候需要锁 ...
- 简单的linux看门狗脚本
watchdog.sh #!/bin/bash now=`date '+%Y-%m-%d %H:%M:%S'` baseDir=$(cd `dirname $0`; pwd) sleepTime=10 ...
- 牛客网提高组第二场---solution
T1 方差 根据题目要求将式子先写出来注意下面式子中的 $n$ 全部都是 $n-1$$$\begin{aligned}ans&=n^2\times \frac{1}{n}\times \sum ...
- nginx搭建静态资源服务器
nginx配置访问前端工程 1.前端工程目录 crm-view |-- view |-- user.html 2.工程位置 C:\Users\Administrator\Desktop\CRM系统\c ...
- log4j动态文件名
在项目中,对log的输出有多种多样的要求,下面具体分析一下动态log文件名输出的. 一,按照用户ID来生成log,这种情况,可以根据每个用户ID来动态生成logger. 代码如下: import or ...
- Go:面向"对象"
一.封装 封装的实现步骤: 将结构体.字段的首字母小写(不能被导出): 给结构体所在的包提供一个工厂模式的函数,首字母大写.类似一个构造函数: 提供一个首字母大写的方法,由于获取结构体属性的值. 二. ...