在页面中加入内容时,假设是静态内容。无需使用容器,能够直接将标记作为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. CE工具里自带的学习工具--第三关

    图解: 重复第5,6,7,8,9步,最终得到:

  2. [转载]MyBatis mapper文件中的变量引用方式#{}与${}的差别

    转载自:http://blog.csdn.net/szwangdf/article/details/26714603 默认情况下,使用#{}语法,MyBatis会产生PreparedStatement ...

  3. JavaSE-15 Log4j参数详解

    一:日志记录器输出级别,共有5级(从前往后的顺序排列) ①fatel:指出严重的错误事件将会导致应用程序的退出 ②error:指出虽然发生错误事件,但仍然不影响系统的继续运行 ③warn:表明会出现潜 ...

  4. Android突破64K限制

    1.添加依赖 android{ defaultConfig{ ... multiDexEnabled true ... } } dependencies{ compile 'com.android.s ...

  5. iOS工具】rvm、Ruby环境和CocoaPods安装使用及相关报错问题解决

    〇.前言 <p>在iOS开发中 CocoaPods作为库依赖管理工具就是一把利器. 有了 CocoaPods则无需再通过拖 第三方库及第三方库所依赖的 framework静态库到项目中等麻 ...

  6. Spring Boot . 2 -- 用Spring Boot 创建一个Java Web 应用

    通过 start.spring.io 创建工程 通过 IDEA 创建工程

  7. [Python3网络爬虫开发实战] 7.1-Selenium的使用

    Selenium是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击.下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬.对于一些JavaScript动态渲染的页面来说 ...

  8. YOLOv3测试命令

    一.老规矩 在darknet\build\darknet\x6下按住shift键,点击鼠标右键选择“在此处打开Powershell 窗口(s)” 二.测试图片命令: .\darknet detect ...

  9. 杭电 4883 TIANKENG’s restaurant (求饭店最少需要座椅)

    Description TIANKENG manages a restaurant after graduating from ZCMU, and tens of thousands of custo ...

  10. vscode调试nodejs

    1.安装nodejs 2.安装vscode 3.vscode安装debugger for chrome插件 4.新建nodejs-test文件夹,新建server.js空白文件,添加内容: var h ...