存档

‘C#/ASP.NET’ 分类的存档

VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

2012年2月8日 冰点浏览次数(7) 没有评论

开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件。(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网上发表相关内容的朋友们。)

ActiveX控件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件。这里控件容器就是浏览器,用户不需要通过浏览器调用控件的属性或方法。因此,开发面向Web的ActiveX控件比开发桌面的控件还要简单些,所复杂的是如何将该控件很好地嵌入主页,使用户能正常浏览。下面介绍这个问题。 阅读全文…

从客户端中检测到有潜在危险的 Request.Form 值的最优解决方案

2012年2月7日 冰点浏览次数(8) 没有评论

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>”). 阅读全文…

解决sql server触发器的影响行数对程序的影响

2011年12月30日 冰点浏览次数(18) 没有评论

解决方法:
方法很简单,就是直接在触发器内关闭触发器的影响行数。使用如下语句:
set nocount on——-关闭影响行数
set nocount off——-打开影响行数

分类: C#/ASP.NET, MSSQL 标签: , ,

Asp.Net与SEO-Viewstate优化终极解决方案

2011年11月3日 冰点浏览次数(39) 没有评论

这段时间,老大在看了网站后,发现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几种页面传值的方法

2011年9月16日 冰点浏览次数(28) 没有评论

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&param2=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&param2=2222")
   接收页面: string str = Request["param1"]
7、Server.Transfer()方式。
   Server.Transfer("target.aspx?param1=1111&param2=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 );
  }
}

ASP.NET回调实现AJAX

2011年8月25日 冰点浏览次数(23) 没有评论

新建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>

  阅读全文…

分类: C#/ASP.NET, JAVASCRIPT 标签: , ,

ASP.NET利用NPOI 1.2.3导出EXCEL2007下载

2011年8月24日 冰点浏览次数(282) 没有评论

代码如下:

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));//合并标题行 阅读全文...

ASP.NET导出Excel下载

2011年8月23日 冰点浏览次数(73) 没有评论

调用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下载"; 阅读全文...
分类: C#/ASP.NET 标签: , ,

.net动态执行javascript,C#代码

2011年8月11日 冰点浏览次数(47) 没有评论
.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

ASP.NET动态加载JS/CSS

2011年7月15日 冰点浏览次数(43) 没有评论
#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);
 

C#的String类添加按字节截取字符串的扩展方法

2011年6月23日 冰点浏览次数(39) 没有评论
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等"

.net 多线程操作form控件

2011年4月11日 冰点浏览次数(56) 没有评论

一种是通过设置System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;

第二种创建代理类 阅读全文…

分类: C#/ASP.NET 标签: , ,

C#/ASP.NET 配置文件app.config/web.config 修改

2011年4月2日 冰点浏览次数(175) 没有评论

应用程序配置文件,对于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 小节来作为例子: 阅读全文…

Oracle推出Linq to Oracle

2011年2月15日 冰点浏览次数(716) 没有评论

                Oracle推出Linq to Oracle EF,目前还是测试版.

                使用方法跟Linq to MSSQL   EF完全一样

                 插件下载地址:32-bit Oracle Data Access Components (ODAC)for Microsoft Entity Framework and LINQ to Entities 注意下载需要登录 注册个用户名即可. 阅读全文…

C#开发ActiveX控件打包CAB分发

2011年1月19日 冰点浏览次数(819) 没有评论

这段时间因为工作的需要,研究了一下ActiveX控件。总结如下:

先说说ActiveX的基本概念。

根据微软权威的软件开发指南MSDN(Microsoft Developer Network)的定义,ActiveX插件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。 阅读全文…