在页面中加入内容时,假设是静态内容。无需使用容器,能够直接将标记作为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. 06JavaScript函数

    JavaScript函数 3.1系统函数 3.1.1编码函数 功能:将字符串中非文字.数字字符(如&,%,#,^,空格符…)转成相对应的ASCII值. 语法:escape(字符串) 3.1.2 ...

  2. redis简介以及安装

    redis作为开源的高性能的键值对数据库,本身是单线程的,性能虽然没有memcache高,但是也是性能跟memcache相差无几的,memcache是多线程的,但是redis本身功能更加强大,学习一下 ...

  3. Linux 内核框架图

  4. VIM命令大全(图+文)

    在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行.你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format.使 ...

  5. nodejs学习(二) ---- express中使用模板引擎jade

    系列教程,上一节教程  express+nodejs快速创建一个项目 在创建一个项目后,views目录下的文件后缀为 .jade . 打开 index.jade,具体内容如下图(忽略 header.j ...

  6. google查找笔记

    1.可以选择MDN.WIKI等权威的网址资料

  7. http主要请求头

    一.内容协商 1.Accept:希望服务器返回的数据格式,如下面的:text/javascript, application/javascript, application/ecmascript, a ...

  8. buf.swap32()

    buf.swap32() 返回:{Buffer} 将 Buffer 解释执行为一个32位的无符号整数数组并以字节顺序交换到位.如果 Buffer 的长度不是32位的倍数,则抛出一个 RangeErro ...

  9. Auto-Encoders实战

    目录 Outline Auto-Encoder 创建编解码器 训练 Outline Auto-Encoder Variational Auto-Encoders Auto-Encoder 创建编解码器 ...

  10. insert,extend

    #insert s = ['8','9','sfd',('45','00'),{'01':'56'}] s0 = [] while 1 : extend = input("请输入要添加的内容 ...