当前位置:  编程技术>.net/c#/asp.net

asp.net页面传值方法分享

    来源: 互联网  发布时间:2014-08-30

    本文导语:  1,使用QueryString变量 QueryString传值简单易用,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全性要求不高或结构简单的数值时,可以使用此方法。 例如:   代码示例: Response.Redirect( "target.aspx?param1=hel...

1,使用QueryString变量
QueryString传值简单易用,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全性要求不高或结构简单的数值时,可以使用此方法。
例如:
 

代码示例:
Response.Redirect( "target.aspx?param1=hello¶m2=hi ")

接收页面:
 

代码示例:
string str=Request.QueryString["param1"];
string str1=Request.QueryString["param2];

2,使用Cookie对象变量(Cookie保存在客户端)
设置Cookie:
 

代码示例:
HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);

获取Cookie:
 

代码示例:
string name= Request.Cookie["name"].Value.ToString();

3,使用Session变量(session保存在服务器端)
设置Session:
 

代码示例:
Session["name"] ="hello";

获取Session:
 

代码示例:
string name = Session["name"].ToString();

4,使用Application 对象变量
Application对象的作用范围是整个全局,对所有用户都有效。
不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。

设置Application :
 

代码示例:
Application["name"] = ="hello";

获取Application :
 

代码示例:
string   name = Application["name"].ToString();

5,PostBackUrl()方法
default.aspx页面:
 

代码示例:

efault2.aspx页面:
 

代码示例:
if (PreviousPage != null)
{
   TextBox textBox1 = (TextBox)PreviousPage.FindControl("TextBox1");
   Response.write(textBox1.Text );
}

6,使用Server.Transfer方法
面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页 面的应答流,所以这个方法是完全面象对象的,简洁有效。
以下展示在需要很多个参数时使用的方法,如果参数比较少就没必要使用此方法了。
如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用是让结果页面获得构建结果时所需的参数,即可实现多页面共享一个结果页面操作!

1、先定义一个类,用该类放置所有查询参数:
 

代码示例:

/**////
/// QueryParams 的摘要说明
///
public class QueryParams
{
private   string   firstName;
private   string   lastname;
private   int    age;

public string Firstname
{
get { return this.firstname; }
set { this.firstname = value; }
}
public string LastName
{
get { return this.lastname; }
set { this.lastname = value; }
}
public string Age
{
get { return this.age; }
set { this.age = value; }
}
}

2、接口定义:
 

代码示例:
/**////  
///   定义查询接口。
///  
public interface IQueryParams
{
/**////  
///   参数
///  
QueryParams Parameters { get;}
}

3、查询页面继承IQueryParams接口(QueryPage.aspx):
 

代码示例:






QueryPage.aspx.cs
 

代码示例:

public partial class QueryPage : System.Web.UI.Page, IQueryParams
{
private QueryParams queryParams;

public   QueryParams   Parameters
{
get
{
return   queryParams;
}
}

public   void   btnEnter_Click(object   sender,   System.EventArgs   e)
{
//赋值
queryParams   =   new   QueryParams();
queryParams.FirstnName = this.txtFirstName.Text;
queryParams.Lastname = this.txtLastName.Text;
queryParams.Age = this.txtAge.Text;
Server.Transfer( "ResultPage.aspx ");
}
protected void Page_Load(object sender, EventArgs e)
{ }
}

4、接收页面(ResultPage.aspx):
ResultPage.aspx.cs
 

代码示例:

public partial class ResultPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
QueryParams queryParams = new QueryParams();
IQueryParams queryInterface;
//实现该接口的页面
if (Context.Handler is IQueryParams)
{
queryInterface = (IQueryParams)Context.Handler;
queryParams = queryInterface.Parameters;
}

Response.Write("FirstName: ");
Response.Write(queryParams.FirstName);
Response.Write("
Lastname: ");
Response.Write(queryParams.LastName);
Response.Write("
Age: ");
Response.Write(queryParams.Age);
}
}

1、在CallBack之后保持滚动条的位置
在Asp.Net1.1中,CallBack之后保持滚动条的位置是一件非常痛苦的事情,特别是页中有一个Grid 并且想要编辑特定的行。为了不停留在想要得行,页面会重新加载并且必须在顶部向下滚动。在Asp2.0中,只需要简单的在页面的属性中加入 MaintainScrollPostionOnPostBack属性即可:
 

代码示例:

2、页面加载后设置默认焦点到控件上
不需要javascript的辅助即可完成。
如果在页面中有一两个textbox,为何要让用户去点击textbox来开始输入数据呢?
可以考虑使用HtmlForm控件的 DefaultFocus属性,让光标已经停留在textbox进而可以输入数据。
 

代码示例:

3、用户点击“Enter”键时触发默认按钮的click实践。
在Asp1.1中,想要使用户点击“Enter”键就能关联到一个button的服务器段的click事件需要借助于javascript。
现在可以使用HtmlForm控件的DefaultButton属性来设置。

此属性也可以设置到 Panel控件上,当用户移动到页面中不同的Panel上,点击enter键来触发不同的button控件的click事件。
 

代码示例:

4、简单的寻找固定的控件。
在页面的控件中按层次寻找控件很痛苦,但是如果知道控件怎样固定在页面中,就可以用简写”$”来查找控件而不用写递归的代码。
看下面的这段代码,注意”$”的使用:
 

代码示例:




Name:




此小技巧也可以用在服务器端的 使用FindControl()函数时:
 

代码示例:
TextBox tb = this.FindControl("form1$formVw$txtName") as TextBox;
if (tb != null)
{
//Access TextBox control
}

5、强类型访问跨页提交的控件
这个比其他的要内容多一点,但是很有用。ASP.NET 2.0引入了交叉回发的概念使得一个页面可以将信息回发到另一个不同的页面,可以将button控件的PostBackUrl属性设置为接受回发数据的页 面来完成。一般的,回发的数据可以象前一页那样做一些事情。但是,如果你要获得前一页制定控件的属性就需要一个cast(),如果你给引起回发的 code-behide页面添加了一个公共属性,你就可以直接以强类型的方式添加PreviousPageType来指向引起回发的页面从而能够访问那个 属性。

如果有一个页面Default.aspx,他有一个公共属性来返回此页面上一个TextBox,数据回发目的页(SearchResults.aspx)可以以强类型的方式(不需要FindControl() 方法),在页面的顶部添加:
 

代码示例:

 

这样,SearchResults.aspx中代码就可以以强类型的方式访问Default.aspx的TextBox。下面的例子假定Default.aspx定义的属性名为SearchTextBox:
TextBox tb = PreviousPage.SearchTextBox; PreviousPageType还有一个TypeName属性,你可以定义一个基本类型,一个或多个页面从此类型继承下来,使得这种技术可以在多页面上使用。
PreviousPage.IsCrossPagePostBack可以判断是否为垮页提交。

对于跨页提交的补充:
在ASP.NET 1.X 版本中,页面都是提交到自己本身,并不能方便的指定需要提交的目的页面。例如FirstPage.aspx中的button只能提交到 FirstPage.aspx,而不能提交到SecondPage.aspx。很多时候,ASP.NET 1.X这样工作方式使我们的开发方式受到不少限制。熟悉ASP/JSP/PHP的朋友大概很不习惯,因为以前经常使用的提交方式突然无法使用,虽然也有解 决这个问题的方法(欲详细了解的读者可去微软网站收看webcast),可是过程太烦琐,不甚方便。令我们高兴的是,ASP.NET 2.0中有了跨页面提交的简单方法。可在第一个页面中的button添加PostBackUrl属性设置为接受提交的页面,并且这个页面增加 PreviousPageType 指令,若要是目标页面在新窗口中打开则可以在源页面<form>标记增加target=’_blank’属性。

6、强类型访问母版页的控件
PreviousPageType指令并不是唯一的可以强类型访问控件的方法。如果在母版页中定义了一个公共属性, 并且想要以强类型的方式访问它,那么就可以在页面顶部添加MasterType指令(注意:MasterType指令同PreviousPageType 一样允许定义一个TypeName)
 

代码示例:

 

你可以在内容页书写如下的代码来访问目标母版页的属性:
 

代码示例:
this.Master.HeaderText = "Label updated using MasterType directive with VirtualPath attribute.";

7、Validation groups验证组
一个页中可能有多个控件和多个按钮。当其中的一个按钮被点击后想要特定的validator被激发而不是页面中的所 有validator。在ASP.NET 1.1中除了hack code没有更好的办法。ASP.NET 2.0中给所有的validator控件和按钮(button、linkbutton等等)增加了ValidatorGroup属性,就可以轻松地解决这 个问题。如果在页面中有一个TextBox并且紧挨着他有一个RequiredFieldValidator 和Button控件,可以将RequiredFieldValidator和Button的ValidationGroup属性设置成一样的值从而使得点 击button时只触发这个RequiredFieldValidator的validor,任何没有定义在ValidationGroup内的其他的 validator都会被忽略。
示例:
 

代码示例:

Search Text:

.
Other controls with validators and buttons defined here

    
 
 

您可能感兴趣的文章:

  • 设置ASP.NET页面的运行超时时间详细到单个页面及站点
  • asp.net页面与页面之间传参数值方法(post传值和get传值)
  • ASP.NET 页面中加添加用户控件的写法
  • asp.net防止页面重复提交(示例)
  • asp.net页面防止重复提交示例分享
  • 在jsp 中如何实现像asp 中的页面弹出式的菜单
  • asp.net 参数不同共用一个页面的实现方法
  • Asp.Net其他页面如何调用Web用户控件写的分页
  • 如何在ASP的frame框架中屏蔽右键,以防止查看页面的源代码?
  • asp.net显示页面执行时间
  • 有终止jsp页面的继续执行的命令么?(类似于asp中resonse.end())
  • ASP.NET对HTML页面元素进行权限控制(一)
  • asp.net防止页面刷新重复提交的代码
  • 我用asp.net做一个聊天室,各位有没有好的页面刷新办法?
  • asp.net输出重写压缩页面文件的实例
  • asp.net 清除IE页面缓存的方法
  • ASP.NET页面按钮单击事件失效的解决方法
  • ASP.Net中表单POST到其他页面的方法分享
  • asp.net页面时间格式化的例子
  • asp.net页面中时间格式化的示例
  • asp.net UrlEncode对应asp urlencode的处理方法
  • asp.net post方法中参数取不出来的解决方法
  • Linux平台下哪种方法实现ASP好?
  • asp.net 禁用viewstate(web.config中配置)的方法
  • c#(asp.net)接收存储过程返回值的方法
  • asp.net 超时设置的方法介绍
  • ASP.NET使用Subtract方法获取两个日期之间的天数
  • asp.net获取url地址的方法
  • iis8.5显示ASP的详细错误信息500 内部服务器错误解决方法
  • asp.net Control控件常用的属性与方法
  • ASP.NET 回发密码框清空问题处理方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • asp.net css控制打印功能的方法分享
  • ASP.NET 程序中删除文件夹导致session失效问题的解决办法分享
  • asp.net Textbox服务器控件的技巧分享(图文)
  • asp.net利用存储过程实现模糊查询示例分享
  • asp.net 执行sql超时的解决方法分享
  • 分享一例asp.net 水印的实现代码
  • asp.net 注册脚本的代码分享
  • asp.net错误页面处理示例分享
  • asp.net连接数据库读取数据示例分享
  • asp.net字符串分割函数使用方法分享
  • 使用asp.net MVC4中的Bundle遇到的问题及解决办法分享
  • asp.net EncryptHelper 加密帮助类代码分享
  • asp.net操作xml增删改示例分享
  • asp.net发送邮件并在正文中插入图片的代码分享
  • 页面间隔半秒钟更新时间 Asp.net使用Comet开发http长连接示例分享
  • asp.net发送邮件示例分享
  • asp.net生成缩略图示例方法分享
  • asp.net微软图表控件使用示例代码分享
  • Asp.Net(C#)自动执行计划任务的程序实例分析分享
  • asp.net文件上传示例分享
  • ASP.NET之 Ajax相关知识介绍及组件图
  • 我想了解一些关于Java怎样与Asp或Asp.net结合方面在未来发展方向的问题?
  • c#/ASP.NET操作cookie(读写)代码示例
  • asp.net实例 定义和使用asp:AccessDataSource
  • win2008 r2 服务器环境配置(FTP/ASP/ASP.Net/PHP)
  • asp与asp.net的session共享
  • 如何在unix下发布asp?
  • 怎么让Apache支持Asp?
  • ??谁能把ASP代码改为JSP的
  • ASP和ASP.Net共享Session解决办法
  • 通过socket和asp打交道


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3