ASP.NET Web编程
runat="server"直接回交服务器,处理数据,又以数据加密后的hidden属性的input控件插入回去,实现表单的状态保存 ruant="server"表示这个控件是在服务器端运行的,说简单点就是你可以在.cs后台代码里引用到这个控件。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Registration.aspx.cs" Inherits="EventRegistrationWeb.Registration" %>
//定义了要使用的编程语言和类。属性 AutoEventWireup="true"表示,页面的事件处理程序自动链接到特定方法名上。Inherits="EventRegistrationWeb.Registration"表示ASPX文件中动态生成的类派生于基类Registration,
这个基类位于用CodeBehind属性定义的代码隐藏文件Registration.aspx.cs中。
还有一些带有runat="server"特性的HTML 元素,如form元素. 通过runat="server"特性,
ASP.NET 服务器控件就会与HTML 标记关联起来。这个控件可以用于写入服务器端代码。在form
元素的后面是System.Web.UI.HtmlControls.HtmlForm 类型的一个对象,该对象有一个用id 特性定义
的变量名form1。form1 可以用于调用HtmlForm 类的方法和属性。
HtmlForm 对象创建一个发送给客户端的form标记。
<form id="form1" runat="server">
string selectedEvent = dropDownListEvents.SelectedValue;
SelectedValue属性返回当前的选择
try
{
DropDownList dropDownListEvents =
(DropDownList)PreviousPage.FindControl("dropDownListEvents");
string selectedEvent = dropDownListEvents.SelectedValue;
string firstName = ((TextBox)PreviousPage.FindControl(
"textFirstName")).Text;
string lastName = ((TextBox)PreviousPage.FindControl(
"textLastName")).Text;
string email = ((TextBox)PreviousPage.FindControl(
"textEmail")).Text;
labelResult.Text = String.Format("{0} {1} selected the event {2}",
firstName, lastName, selectedEvent);
}
catch
{
labelResult.Text = "The originating page must contain " +
"textFirstName, textLastName, textEmail controls";
把Registration.aspx 页面上Submit 按钮的PostbackUrl 属性设置为ResultsPage.aspx。
回送
浏览器把第一个页面中窗体的所有数据都发送到新页面上,但是,在新请求的页面上,需要从
前面页面定义的控件中获取数据。为了访问前面页面中的控件,Page 类定义了属性PreviousPage。
PreviousPage 返回一个Page 对象,这个页面的控件可以使用FindControl()方法来访问。FindControl()
定义为返回一个Control 对象,所以必须把返回值的类型转换为所搜索的控件类型。
DropDownList dropDownListEvents =
((DropDownList)PreviousPage.FindControl("dropDownListEvents")).Text;
创建强类型对象
试一试:创建强类型化的PreviousPage
(1) 选择“项目 ➪ 添加类”(Project ➪ Add New Class),为项目添加一个新类,命名为
RegistrationInfo。
(2) 实现RegistrationInfo 类,如下所示:
public class RegistrationInfo
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string SelectedEvent { get; set; }
}
(3) 在Registration.aspx.cs 文件中给Registration 类添加公共属性RegistrationInfo:
public RegistrationInfo RegistrationInfo
{
get
{
return new RegistrationInfo
{
FirstName = textFirstName.Text,
LastName = textLastName.Text,
Email = textEmail.Text,
SelectedEvent = dropDownListEvents.SelectedValue
};
}
}
(4) 在ResultPage.aspx 文件的Page 指令下面添加PreviousPageType 指令:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ResultsPage.aspx.cs"
Inherits="EventRegistrationWeb.ResultsPage" %>
<%@ PreviousPageType VirtualPath="~/Registration.aspx" %>
(5) 在ResultsPage 类的Page_Load()方法中,代码可以简化为:
protected void Page_Load(object sender, EventArgs e)
{
try
{
RegistrationInfo ri = PreviousPage.RegistrationInfo;
labelResult.Text = String.Format("{0} {1} selected the event {2}",
ri.FirstName, ri.LastName, ri.SelectedEvent);
}
catch
{
labelResult.Text = "The originating page must contain " +
"textFirstName, textLastName, textEmail controls";
}
}
PreviousPageType 指令创建了一个PreviousPage 类型的属性,它返回与该指令关联的类型。在
其实现代码中,调用了基类的PreviousPage 属性,如下面的代码所示:
public new EventRegistrationWeb.Default PreviousPage {
get {
return ((EventRegistrationWeb.Default)(base.PreviousPage));
}
}
这里没有使用PreviousPageType 指令的VirtualPath 特性定义上一个页面的类型,而使用了
TypeName 特性。如果前面有多个页面,就可以使用这个特性。此时,需要为前面的所有页面定义
一个基类,并把该基类赋予TypeName 特性。
ASP.NET Web编程的更多相关文章
- asp.net web编程开发将model键值对化
关键字:model属性,反射 正文 model是数据库的映射,在.net web开发中,作为程序的最底层.web开发的一切都是基于数据库的,分了层之后,就基于model了. 为什么要将 ...
- 《ASP.NET MVC4 WEB编程》学习笔记------Web API
本文截取自情缘 1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集 ...
- ASP.NET Web API编程——路由
路由过程大致分为三个阶段: 1)请求URI匹配已存在路由模板 2)选择控制器 3)选择操作 1匹配已存在的路由模板 路由模板 在WebApiConfig.Register方法中定义路由,例如模板默认生 ...
- ASP.NET MVC 5 Web编程2 -- URL映射(路由原理)
本章将讲述ASP.NET MVC5 的路由原理,即URL映射机制. 简单点就是解释:为什么MVC在浏览器输入地址就能访问到类(或类中的方法)?这是怎么做到的?我自己可以通过.NET写出一个自己的MVC ...
- How and Where Concurrent Asynchronous I/O with ASP.NET Web API 对异步编程分析的非常的好
How and Where Concurrent Asynchronous I/O with ASP.NET Web API http://www.tugberkugurlu.com/archive/ ...
- ASP.NET MVC 4 Web编程
http://spu.jd.com/11309606.html 第1章 入门第2章 控制器第3章 视图第4章 模型第5章 表单和HTML辅助方法第6章 数据注解和验证第7章 成员资格.授权和安全性第8 ...
- 《ASP.NET MVC4 WEB编程》学习笔记------Web API 续
目录 ASP.NET WEB API的出现缘由 ASP.NET WEB API的强大功能 ASP.NET WEB API的出现缘由 随着UI AJAX 请求适量的增加,ASP.NET MVC基于Jso ...
- ASP.NET Web API编程——序列化与内容协商
1 多媒体格式化器 多媒体类型又叫MIME类型,指示了数据的格式.在HTTP协议中多媒体类型描述了消息体的格式.一个多媒体类型包括两个字符串:类型和子类型. 例如: text/html.image/p ...
- ASP.NET Web API编程——构建api帮助文档
1 概要 创建ASP.NET Web Api 时模板自带Help Pages框架. 2 问题 1)使用VS创建Web Api项目时,模板将Help Pages框架自动集成到其中,使得Web Api项目 ...
随机推荐
- Linux 安装xtrabackup的依赖问题
问题: 尝试安装xtrabackup rpm -ivh percona-xtrabackup-2.2.11-1.el7.x86_64.rpm 报错 perl(DBD::mysql) 被 percona ...
- 深入Android媒体存储服务(一):APP与媒体存储服务的交互
简介: 本文介绍如何在 Android 中,开发者的 APP 如何使用媒体存储服务(包含MediaScanner.MediaProvider以及媒体信息解析等部分),包括如何把 APP 新增或修改的文 ...
- HTML标签CSS属性默认值汇总
HTML标签CSS属性默认值,在你需要还原默认值的时候比较有用. 以前一直在找这份文档,今天偶然在网上看到了.除了inline和block的定义,主要是要注意body|h1~h6|blockquote ...
- C#动态编译、执行代码
在开始之前,先熟悉几个类及部分属性.方法:CSharpCodeProvider.ICodeCompiler.CompilerParameters.CompilerResults.Assembly. 一 ...
- oracle初始安装大小
oracle初始安装大小 /ruiy/ocr/DBSoftware/app/oracle/ruiy/ocr/DBSoftware/app/oraInventory/ruiy/ocr/DBData/or ...
- openNebulafrontEnd ComputeNode 配置记录
1,OpenNebula nfs(file system shared) for image datastore;
- 差一本CSS 3的书,有兴趣的作者来写
最近出版了一套CSS图书,但是缺一个CSS 3作者,是要独立写一本书的,所以要求作者务必有2年以上的经验,有写作时间和写作爱好 平时写BLOG者优先 有兴趣的可以联系Q:1602943293,验证:写 ...
- .NET中TextBox控件设置ReadOnly=true后台取不到值 三种解决方法
方法一:不设置ReadOnly属性,通过onfocus=this.blur()来模拟,如下: <asp:TextBox ID="TextBox1" runat="s ...
- HTML系列(八):表格
一.基本表格: 表格标记<table>,行标记<tr>,单元格标记<td> 基本语法: <table> <tr> <td>单元格 ...
- JavaScript之面向对象学习一
1.通过Object构造函数和对象字面量来创建对象缺点:使用同一个接口创建很多的对象,会产生大量的重复代码.比如我需要创建人的对象,并且需要三类人,医生.工程师.老师,他们可以抽象出很多属性,比如姓名 ...