在页面中加入内容时,假设是静态内容。无需使用容器,能够直接将标记作为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使用的更多相关文章

  1. (转)asp.net中Literal与label的区别

    asp.net中Literal与label的区别 一.Literal Web 服务器控件概述(摘于MSDN) 可以使用 Literal Web 服务器控件作为页面上其他内容的容器.Literal 最常 ...

  2. Python PageFactory-使用配置文件动态生成页面PageObject

    需求 在Python Selenium 的 PageObject模式中,一般每个页面需要写一个类, 一种PageObject的写法如下: class BaiduPageObject(object): ...

  3. ASP.NET中Literal控件的使用方法(用于向网页中动态添加内容)

    原文:https://www.jb51.net/article/82855.htm 可以将 Literal 控件用作网页上其他内容的容器.Literal 控件最常用于向网页中动态添加内容.简单的讲,就 ...

  4. asp.net中Literal与label的区别

    Literal 控件表示用于向页面添加内容的几个选项之一.对于静态内容,无需使用容器,可以将标记作为 HTML 直接添加到页面中.但是,如果要动态添加内容,则必须将内容添加到容器中.典型的容器有 La ...

  5. sitemap.xml 静态和动态生成页面 shopnc二次开发 动态生成sitemap.xml

    Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页.最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间.更改的 ...

  6. ASP.NET中Literal,只增加纯粹的内容,不附加产生html代码

    页面代码 <div style="float: right; color: #666; line-height: 30px; margin-right: 12px;" id= ...

  7. 动态生成web表-asp.net table

    1. 页面上定义一个server 的table <table style="width: 100%" id="tbContent" runat=" ...

  8. 通过js动态生成页面表格

    var redlineTemplateP = $(".redlineDataList"); for (var index in detailArraryLists.rows){ v ...

  9. Javascript动态生成的页面信息爬取和openpyxl包FAQ小记

    最近,笔者在使用Requests模拟浏览器发送Post请求时,发现程序返回的html与浏览器F12观察到的略有不同,经过观察返回的response.text,cookies确认有效,因为我们可以看到返 ...

随机推荐

  1. Win10上 visual studio设置为本地IIS运行网站时 必须以管理员身份加载项目的解决方法

    右键,选择“兼容性疑难解答”. 选择“疑难解答程序” 选择“该程序需要附加权限” 点击测试程序 点击下一步 选择 是,为此程序保存这些设置

  2. HTTP的工作原理

    客户机与服务器建立连接后,发送一个请求给服务器,请求格式为:统一资源标识符.协议版本号.服务器收到请求的信息(包括请求行,请求头,请求体).服务器接收到请求后,给予相应的响应信息,格式为一个状态行(包 ...

  3. Learning Discriminative and Transformation Covariant Local Feature Detectors实验环境搭建详细过程

    依赖项: Python 3.4.3 tensorflow>1.0.0, tqdm, cv2, exifread, skimage, glob 1.安装tensorflow:https://www ...

  4. python 列表生成式、lower()和upper()的使用

    参考: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868196389 ...

  5. spring data jpa方法命名规则

    关键字 方法命名 sql where字句 And findByNameAndPwd where name= ? and pwd =? Or findByNameOrSex where name= ? ...

  6. 【memcached】memcached中flags字段的作用

    我们一般只注意到memcached的数据结构是key,value,今天看memcached源代码的时候,盯上了flags,没看明白.后来问了一下同事,说PHP当中使用flags标记,标识memcach ...

  7. 集训第四周(高效算法设计)C题 (二分查找优化题)

    Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  8. 3W法则-学习Docker

    一.前言       5W1H法则是在一次面试中学习到的,后来在工作也开始使用这种东西,虽然最后没去那家公司,但是也是学习到了,关注开这些东西以后,也发现了一些简化版的3W法则,最近公司也要搞Doce ...

  9. xcap发包工具的简单使用2(发送报文)

    上一篇文章介绍了如何构造报文,现在简单讲一下发送报文的步骤 1.获取接口列表 点击主界面工具栏中的“刷新列表”按钮(或对应菜单“interface->Reference interfaces”) ...

  10. Oracle导出txt文本文件

    转自: http://blog.csdn.net/ahngzw77/article/details/8652722 对于SPOOL数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句如:  ...