开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件。(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网上发表相关内容的朋友们。)
ActiveX控件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件。这里控件容器就是浏览器,用户不需要通过浏览器调用控件的属性或方法。因此,开发面向Web的ActiveX控件比开发桌面的控件还要简单些,所复杂的是如何将该控件很好地嵌入主页,使用户能正常浏览。下面介绍这个问题。 阅读全文…
ASP.Net 1.1后引入了对提交表单自动检查是否存在XSS(跨站脚本攻击)的能力。当用户试图用之类的输入影响页面返回结果的时候,ASP.Net的引擎会引发一 个 HttpRequestValidationExceptioin。默认情况下会返回如下文字的页面:
以下是引用片段:
Server Error in ‘/YourApplicationPath’ Application
A potentially dangerous Request.Form value was detected from the client
(txtName=”<b>”). 阅读全文…
解决方法:
方法很简单,就是直接在触发器内关闭触发器的影响行数。使用如下语句:
set nocount on——-关闭影响行数
set nocount off——-打开影响行数
这段时间,老大在看了网站后,发现viewstate所产生的一堆乱码,严重影响了我们网站http://www.xbcar.net 西部汽车网的打开速度和搜索引擎的抓取.就给我下了道铁令,三天内必须解决.这下该轮到我头大了,
例如:
input type=”hidden” name=”__VIEWSTATE” id=”__VIEWSTATE” value=”dEV4cHJlc3Npb247UmVhZE9ubHk7PjtsPHB1Yl9uYW1lO3B1Yl9uYW1lO3B1Yl9uYW1 lO288Zj47Pj47Ozs7PjtAMDxw” />
我立马翻遍了所有的资料,及查遍了百度和Google。以求得到最佳解决方案。但都没有一个完整的解决方案。都写的比较零碎。但黄天不负有心人,最终还是让我找到了几种方案,并加以修改,改进。在此我要感谢这几个方案的提供者。谢谢他们的分享,在解决完我自己的问题后,有感于前几位的分享,故我也不敢独自分享,现在总结七种解决方案如下,以供大家分享,有不对的地方欢迎拍砖。现把ViewState的优化方法总结如下:
第一种解决方案(最快的一种,但是以牺牲asp.net方便性为代价的)西部汽车网
禁用viewstate。可在web.config里配置,或者页面@Page指令里加入 Enableviewstate=”false” ,即可防止上面的乱码了。然后页面传值使用form或者cookies,别用session和application他们都是服务器杀手,但这种方式灵活度不高,而且微软自带的控件无法使用了,不如用 阅读全文…
ASP.NET中页面传值
一、目前在ASP.NET中页面传值共有这么几种方式:
1、表单提交,
<form action= "target.aspx" method = "post" name = "form1">
<input name = "param1" value = "1111"/>
<input name = "param2" value = "2222"/>
</form>
....
form1.submit();
....
此种方在ASP。NET中无效,因为ASP。NET的表单总是提交到自身页面,如果要提交到别一页面,需要特殊处理。
2、<A href="target.aspx?param1=1111¶m2=2222">链接地址传送</A>
接收页面: string str = Request["param1"]
3、Session共享
发送页面:Session("param1") = "1111";
按收页面 string str = Session("param1").ToString();
4、Application共享
发送页面: Application("param1") = "1111";
按收页面: string str = Application("param1").ToString();
此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。
5、Cookie
6、Response.Redirect()方式
Response.Redirect("target.aspx?param1=1111¶m2=2222")
接收页面: string str = Request["param1"]
7、Server.Transfer()方式。
Server.Transfer("target.aspx?param1=1111¶m2=2222")
接收页面: string str = Request["param1"]
8、我们建立一个CrossPageSubmitTest.aspx页面,在任意页面建立一个按钮提交到 CrossPageSubmitTest.aspx。
<asp:ButtonID="btn_CrossPageSubmit" runat="server"OnClick="btn_CrossPageSubmit_
Click"PostBackUrl="CrossPageSubmitTest.aspx" Text="跨页面提交" />
然后在CrossPageSubmitTest.aspx的Page_Load中加入以下代码就能输出前一个页面上btn_CrossPageSubmit按钮的Text属性。
Response.Write((PreviousPage.FindControl("btn_CrossPageSubmit")as Button).Text);
二、如果在两个页面间需要大量的参数要传传递,如数据查询等页面时,用1 - 6的方法传值及其不便,而第 7 种方法确有一独特的优势!但使用该方法时需要一定的设置,现简单介绍一下该方法的使用方式:
以查询数据页面为例:
在查询页面中设置如下公有属性(QueryPage.aspx):
public class QueryPage : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox txtStaDate;
protected System.Web.UI.WebControls.TextBox txtEndDate;
...
/// <summary>
/// 开始时间
/// </summary>
public string StaDate
{
get{ return this.txtStaDate.Text;}
set{this.txtStaDate.Text = value;}
}
/// <summary>
/// 结束时间
/// </summary>
public string EndDate
{
get{ return this.txtEndDate.Text;}
set{this.txtEndDate.Text = value;}
}
....
private void btnEnter_Click(object sender, System.EventArgs e)
{
Server.Transfer(“ResultPage.aspx”);
}
} 在显示查询结果页面(ResultPage.aspx):
public class ResultPage : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
//转换一下即可获得前一页面中输入的数据
QueryPage queryPage = ( QueryPage )Context.Handler;
Response.Write( “StaDate:” );
Response.Write( queryPage.StaDate );
Response.Write( “<br/>EndDate:” );
Response.Write( queryPage.EndDate );
}
}
新建Default.aspx页面
前台代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>无标题页</title>
<script type="text/javascript">
//向服务器传递参数
function DoSearch() {
var firstName = document.getElementById("TextBox1").value;
CallServer(firstName, "");
}
//得到服务器的数据
function ReceiveServerData(txtUserInfo) {
Results.innerHTML = txtUserInfo;
}
//设置每1秒执行一次
// setInterval("DoSearch()", 1000);
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
姓名:<asp:TextBox regname="123" onblur="DoSearch()" ID="TextBox1" runat="server"></asp:TextBox>
<br />
<span id="Results" style="background-color: Pink; width: 500px;"></span>
</div>
<asp:Button ID="Button1" runat="server" Text="Button" />
</form>
</body>
</html>
阅读全文…
代码如下:
HSSFWorkbook hssfworkbook = new HSSFWorkbook();
Sheet sheet = hssfworkbook.CreateSheet("new sheet");
Cell cellTitle = sheet.CreateRow(0).CreateCell(0);//创建单元格
cellTitle.Row.Height = 550;//行高
cellTitle.SetCellValue(name);//单元格值
sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 12));//合并标题行 阅读全文...
调用COM组件代码如下:
Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
_Workbook wk = Excel.Workbooks.Add(true);
_Worksheet ws = (_Worksheet)wk.ActiveSheet;
ws.get_Range(Excel.Cells[1, 1], Excel.Cells[1, 13]).MergeCells = true;//合并单元格
ws.get_Range(Excel.Cells[1, 1], Excel.Cells[1, 12]).Borders.LineStyle = 1;//加边框
ws.get_Range(Excel.Cells[1, 1], Excel.Cells[1, 12]).Borders.ColorIndex = "3";//边框颜色
ws.get_Range(Excel.Cells[1, 1], Excel.Cells[1, 13]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置居中对齐
ws.get_Range(Excel.Cells[1, 1], Excel.Cells[1, 13]).Font.Size = 18;//设置字体
ws.get_Range(Excel.Cells[1, 1], Excel.Cells[1, 13]).Font.Color = System.Drawing.Color.White;//字体颜色
ws.get_Range(Excel.Cells[1, 1], Excel.Cells[1, 13]).Interior.ColorIndex = "49";
ws.Cells[1, 1] = "ASP.NET导出Excel下载"; 阅读全文...
.net执行c# 代码
方法1:反射等动态编译类CSharpCodeProvider、ICodeCompiler、CompilerParameters、CompilerResults、Assembly
.net执行js代码
方法1:Microsoft.JScript jsc.exe命令
class MyEval{
function execute(code:String) :String {
return eval(code);
}
}
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319>jsc /target:library /out:D:\MyEval.dll D:\MyEval.js
方法2:google v8
V8: http://code.google.com/p/v8/
V8.NET : http://javascriptdotnet.codeplex.com/documentation
方法3:微软COM组件,Windows Script Control: http://www.microsoft.com/downloads/zh-cn/details.aspx?displaylang=zh-cn&FamilyID=D05FCF37-4D9F-4769-9442-0BCEEF907033
#region 加载JS文件
HtmlGenericControl JSControl = new HtmlGenericControl(“script”);
JSControl.Attributes.Add(“type”, “text/javascript”);
JSControl.Attributes.Add(“src”, “JS/js.js”);
Page.Header.Controls.Add(JSControl);
#endregion
加载CSS文件
HtmlLink CssControl = new HtmlLink();
CssControl.Href = “/CSS/Style.css”;
CssControl.Attributes.Add(“rel”, “stylesheet”);
CssControl.Attributes.Add(“type”, “text/css”);
Page.Header.Controls.Add(CssControl);
String s = "a加b等于c,如果a等1、b等于2,那么c等3";
public static class StringExt
{
public static String bSubstring(this string s, int length)
{
byte[] bytes = System.Text.Encoding.Unicode.GetBytes(s);
int n = 0; // 表示当前的字节数
int i = 0; // 要截取的字节数
for (; i < bytes.GetLength(0) && n < length; i++)
{
// 偶数位置,如0、2、4等,为UCS2编码中两个字节的第一个字节
if (i % 2 == 0)
{
n++; // 在UCS2第一个字节时n加1
}
else
{
// 当UCS2编码的第二个字节大于0时,该UCS2字符为汉字,一个汉字算两个字节
if (bytes[i] > 0)
{
n++;
}
}
}
// 如果i为奇数时,处理成偶数
if (i % 2 == 1)
{
// 该UCS2字符是汉字时,去掉这个截一半的汉字
if (bytes[i] > 0)
i = i - 1;
// 该UCS2字符是字母或数字,则保留该字符
else
i = i + 1;
}
return System.Text.Encoding.Unicode.GetString(bytes, 0, i);
}
}
String subStr = s.bSubstring(6);(此示例运用了另类扩展方法的写法) // substr的值是"a加b等"
一种是通过设置System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
第二种创建代理类 阅读全文…
应用程序配置文件,对于asp.net是 web.config,对于WINFORM程序是 App.Config(ExeName.exe.config)。
配置文件,对于程序本身来说,就是基础和依据,其本质是一个xml文件,对于配置文件的操作,从.NET 2.0 开始,就非常方便了,提供了 System [.Web] .Configuration 这个管理功能的NameSpace,要使用它,需要添加对 System.configuration.dll的引用。
对于WINFORM程序,使用 System.Configuration.ConfigurationManager;
对于ASP.NET 程序, 使用 System.Web.Configuration.WebConfigurationManager;
对于配置文件内容的读取,真是太普遍不过了,如果你的程序里,没有读取配置文件内容的方面,你都不好意思拿出来用。
我们以最常见的 AppSettings 小节来作为例子: 阅读全文…
这段时间因为工作的需要,研究了一下ActiveX控件。总结如下:
先说说ActiveX的基本概念。
根据微软权威的软件开发指南MSDN(Microsoft Developer Network)的定义,ActiveX插件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。 阅读全文…