C#在后台程序中动态创建HTML标签(div,span,a,p等)

案例代码如下:
1,创建div、span、a标签时,核心是用了System.Web.UI.HtmlControls命名空间下的HtmlGenericControl类
2,如果要创建input标签,要用HtmlInputText类

HtmlGenericControl divList = new HtmlGenericControl("div");

if (dsrow["ReadFlag"].ToString() == "已读")
{
    divList.Attributes.Add("class", "list read");
}
else
{
    divList.Attributes.Add("class", "list");
}
HtmlGenericControl a = new HtmlGenericControl("a");
a.Attributes.Add("href", msg_url);
divList.Controls.Add(a);

HtmlGenericControl divMeta = new HtmlGenericControl("div");
divMeta.Attributes.Add("class", "meta");

HtmlGenericControl spanSort = new HtmlGenericControl("span");
spanSort.Attributes.Add("class", "sort " + sorttype + "");
spanSort.InnerText = dsrow["msg_typename"].ToString();
divMeta.Controls.Add(spanSort);

HtmlGenericControl spanStatus = new HtmlGenericControl("span");
spanStatus.Attributes.Add("class", "status");
spanStatus.InnerText = dsrow["ReadFlag"].ToString();
divMeta.Controls.Add(spanStatus);

a.Controls.Add(divMeta);

HtmlGenericControl divTitle = new HtmlGenericControl("div");
divTitle.Attributes.Add("class", "title");
divTitle.InnerText = dsrow["msg_title"].ToString();

a.Controls.Add(divTitle);

HtmlGenericControl divInfo = new HtmlGenericControl("div");
divInfo.Attributes.Add("class", "info");

HtmlGenericControl spanMan = new HtmlGenericControl("span");
spanMan.Attributes.Add("class", "man");
spanMan.InnerText = DeptName + " · " + UserName;
divInfo.Controls.Add(spanMan);

HtmlGenericControl spanTime = new HtmlGenericControl("span");
spanTime.Attributes.Add("class", "time");
spanTime.InnerText = dsrow["Push_date"].ToString();
divInfo.Controls.Add(spanTime);

a.Controls.Add(divInfo);

dataBind.Controls.Add(divList);

要点:
1,要创建html标签,找到对应的类,new一个对象出来即可
2,对象名称.Attributes.Add("属性名称","属性值")添加class、href等属性
3,对象名称.InnerText = "标签的文本内容"
4,对象名称.Controls.Add(子标签名称),这个用来实现HTML标签嵌套、层级关系。

WebForm中GridView获取点击那一行的指定列的值

在古老的WebForm中,用GridView控件实现了一个数据列表,列表最后一列是用asp:ButtonField实现的修改按钮,点击修改时,要打开该条新闻的修改界面,这里有一个关键点,就是必须获取到点击新闻的ID,ASPX前端代码如下:

<asp:GridView ID="GridView" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" OnRowCommand="GridView_RowCommand">
    <Columns>
        <asp:BoundField HeaderText="新闻ID" DataField="ID" Visible="false" />
        <asp:BoundField HeaderText="新闻标题" DataField="Title" />
        <asp:BoundField HeaderText="发布时间" DataField="PubTime" />
        <asp:ButtonField HeaderText="操作" Text="修改" CommandName="look" />
    </Columns>
</asp:GridView>

阅读剩余部分

Sql Server 存储过程传入数组参数的处理方案

在使用存储过程时,不可避免会遇到:把一个以逗号分隔的数字字符串当成数组一样传给存储过程,如下:

exec proc_FuckMe '6,7,8';

存储过程SQL中想当然地用where id in (@ID)这种方式去接传过来的值,会报错的!
解决方案如下代码,在存储过程里面添加一个逻辑,把传进来的值处理一下,然后再给SQL使用:

declare @StrArray varchar(100),@split varchar(100)  --定义@split分隔符,@StrArray需要转换的类似数字数组的字符串 比如6,7,8
set @StrArray=@ID  --从存储过程的形参中获取数据
set @split= ',' --设置分隔符
declare @TempTable table(Row int identity(1,1) not null,TempID int)  --在内存中定义一个临时表,临时字段TempID
set @StrArray=@StrArray+@split  --最后要加个分隔符,
while(charindex(@split,@StrArray)<>0)  
begin 
   insert @TempTable(TempID) values (substring(@StrArray,1,charindex(@split,@StrArray)-1)) 
   set @StrArray = stuff(@StrArray,1,charindex(@split,@StrArray),'') 
end

上面处理完后,后面的SQL使用:

select * from Table where id in (select TempID from @TempTable)

select TempID from @TempTable 通过这个SQL获取到转换后的ID数组结果

最后再强调下:存储过程接收'6,7,8'这种像是数组,实际上是以逗号分隔的数字字符串时,对应的参数要命名为varchar(500),不能再命名为int类型。

错误:IIS 8.5详细错误 - 413.1 - Request Entity Too Large

好好的网站,突然上传30多M的文件,报错:IIS 8.5详细错误-413.1-Request Entity Too Large
根据一顿搜索,找到以下解决方案:
步骤一:编辑C:\Windows\System32\inetsrv\config下的applicationHost.config文件,找到自己项目的location项,在system.webServer下添加如下代码:

<serverRuntime uploadReadAheadSize="1048576000" />

uploadReadAheadSize单位为(B:bytes),这里1048576000 = 1000M,实际大小按需求设置。完整结构如下:

<location path="EMWeb">
    <system.webServer>
        <serverRuntime uploadReadAheadSize="1048576000" />
    </system.webServer>
</location>


阅读剩余部分

VisualSVN Server转移到新服务器的操作步骤

由于某个原因,打算把SVN服务器端迁移到另外一台服务器上。

第一步:让大家停止SVN操作,然后进入Windows服务器,打开软件 VisualSVN Server Manager,停止SVN服务
停止SVN服务.png
第二步:查看SVN服务器的属性(Properties),找到储存(Storage)一项,一般默认都是存放在D:Repositories,这是版本库实体文件夹
查看SVN服务器的属性.png
查看SVN服务器的储存.png





阅读剩余部分