C# 用类来获取参数

在类名为 NewClass中 定义一个
私有类 info 列如

class NewClass
{
private class info
{
public string url=string.Empty;
}

public string geturl(string url)
{
return ***.方法名(url);
}
}

info 类中的 url 怎么获取从页面传过来的值,然后给到 geturl 方法里 并返回
我的意思是 用info 类来加载页面获取的值,然后把info类获得到的值传到 geturl 方法里!

总结的一些方法 希望对楼主有帮助

一、使用Querystring
Querystring是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象。如果你想传递一个安全性不是那么太重要或者是一个简单的数值时,用此方法最好不过了。下面通过一个小例子来完成传值工作,步骤如下:
1、创建一个web form
2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2
3、为button按钮创建click事件
代码如下:
private void Button1_Click(object sender, System.EventArgs e)
{
string url;
url="webform2.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text;
Response.Redirect(url);
}
4、新建一个目标页面命名为webform2
5、在webform2中放置两个Label1,Label2
在webform2的Page_Load中添加如下代码:
private void Page_Load(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];
}
运行,即可看到传递后的结果了。

这种方法得缺点是:
1:一般来说这种方法通常使用来传递明码参数,也就是不需要保密得参数,同时在使用querystring传值得时候不能传递对象,参数的长度不能大于1024字节(?),当参数中有中文得时候,通常需要使用HttpUlitity.UrlEncode方法来对参数进行编码和解吗。

二、使用Session变量

使用Session变量传值是一种最常见的方式了,此中方式不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session变量的值removed后,变量才会消失。举个例子看看:
1、创建一个web form
2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2
3、为button按钮创建click事件
代码如下:
private void Button1_Click(object sender, System.EventArgs e)
{
Session["name"]=TextBox1.Text; Session["email"]=TextBox2.Text;
Response.Redirect("webform2.aspx");
}
4、新建一个目标页面命名为webform2
5、在webform2中放置两个Label1,Label2
在webform2的Page_Load中添加如下代码:
private void Page_Load(object sender, System.EventArgs e)
{
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
Session.Remove("name");
Session.Remove("email");
}
运行,即可看到传递后的结果了。

这种方法得优缺点是:使用Session变量往往会占用服务器端的内存使用,所以再网页流量很大的时候,Session便不能很好的完成传值得任务,由于session有一个timeout,所以在使用的时候对用户得操作也有一定的影响。

三、使用Server.Transfer
虽然这种方法有点复杂,但也不失为一种在页面传值的方式。
举个例子看看:
1、创建一个web form
2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2
3、为button按钮创建click事件
代码如下:
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("webform2.aspx");
}
4、创建过程来返回TextBox1,TextBox2控件的值代码如下:
public string Name
{
get
{
return TextBox1.Text;
}
}

public string EMail
{
get
{
return TextBox2.Text;
}
}
5、新建一个目标页面命名为webform2
6、在webform2中放置两个Label1,Label2
在webform2的Page_Load中添加如下代码:
private void Page_Load(object sender, System.EventArgs e)
{
//创建原始窗体的实例
WebForm1 wf1;
//获得实例化的句柄
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}
运行,即可看到传递后的结果了。

4,其他传值的方法

Application:
因为应用程序和它存储的所有对象可以同时由不同的线程访问,所以最好只将很少修改的数据与应用程序范围一起存储。理想情况是,对象在 Application_Start 事件中初始化,对它的进一步访问是只读的。
在下面的示例中,文件在 Application_Start(在 Global.asax 文件中定义)中读取,内容则以应用程序状态存储在 DataView 对象中。
void Application_Start()
{
DataSet ds = new DataSet();
FileStream fs = new
FileStream(Server.MapPath("schemadata.xml"),FileMode.Open,FileAccess.Read);
StreamReader reader = new StreamReader(fs);
ds.ReadXml(reader);
fs.Close();
DataView view = new DataView(ds.Tables[0]);
Application["Source"] = view;
}
在 Page_Load 方法中,DataView 随后被检索并用于填充 DataGrid 对象:
void Page_Load(Object sender, EventArgs e)
{
DataView Source = (DataView)(Application["Source"]); ...
MyDataGrid.DataSource = Source;
...
}
此解决方案的优点是只有第一个请求付出检索数据的代价。所有后面的请求则使用已有的 DataView 对象。由于数据自初始化后从不修改,所以不必为序列化访问做任何规定。

Application得使用一般是相对于整个项目来说相对静止的变量,比如数据库连接变量等。对于那些针对每一个用户,每一个会话未必一样得变量就不适用了。通常Application变量得值是在Config终指定。也可以在global.ascx中指定。

Cookie:
下面的示例说明如何使用客户端 Cookie 存储易失的用户首选项。
在客户端存储 Cookie 是 ASP.NET 的会话状态将请求与会话关联的方法之一。Cookie 也可以直接用于在请求之间保持数据,但数据随后将存储在客户端并随每个请求一起发送到服务器。浏览器对 Cookie 的大小有限制,因此,只有不超过 4096 字节才能保证被接受。
当数据存储在客户端时,文件 cookies1.aspx 中的 Page_Load 方法检查客户端是否已发送了 Cookie。如果没有,则创建并初始化一个新的 Cookie 并将其存储在客户端:
protected void Page_Load(Object sender, EventArgs e)
{
if (Request.Cookies["preferences1"] == null)
{
HttpCookie cookie = new HttpCookie("preferences1");
cookie.Values.Add("ForeColor", "black"); ...
Response.AppendCookie(cookie);
}
}
在同一页上,再次使用 GetStyle 方法提供存储在 Cookie 中的个别值:
protected String GetStyle(String key)
{
HttpCookie cookie = Request.Cookies["preferences1"];
if (cookie != null)
{ switch (key)
{ case "ForeColor" : return cookie.Values["ForeColor"]; break; ...
}
}
return "";
}
若要使 Cookie 在会话之间持久,必须将 HttpCookie 类上的 Expires 属性设置为将来的某个日期。除了 Cookie.Expires 的赋值,下列自定义 .aspx 页上的代码与上一个示例相同:
protected void Submit_Click(Object sender, EventArgs e)
{
HttpCookie cookie = new HttpCookie("preferences2");
cookie.Values.Add("ForeColor",ForeColor.Value); ...
cookie.Expires = DateTime.MaxValue; // Never Expires
Response.AppendCookie(cookie);
Response.Redirect(State["Referer"].ToString());
}

Cookie作为一种提交,请求时保存数据得方式,又很明显的优缺点。他的缺点在上面有所表述,比如大小受限,不能保存对象等,另外,作为保存时间,也就是数据得有效期来说,确是保存得最好的。我们可以通过设置cookie得过期时间等属性来设置。Cookie又很多常用属性,包括domain,path等,这些资料可以在quickstart上获取到。
ViewState:
ASP.NET 为每个控件提供视图状态的服务器端注记。控件可以使用类 StateBag 的一个实例上的 ViewState 属性,在请求之间保存它的内部状态。StateBag 类提供词典样式的接口来存储与字符串键关联的对象。
文件 pagestate1.aspx 显示一个可见的面板并使用键 PanelIndex 在该页的视图状态下存储它的索引:
protected void Next_Click(Object sender, EventArgs e )
{
String PrevPanelId = "Panel" + ViewState["PanelIndex"].ToString();
ViewState["PanelIndex"] = (int)ViewState["PanelIndex"] + 1;
String PanelId = "Panel" + ViewState["PanelIndex"].ToString(); ...
}
注意,如果在多个浏览器窗口中打开该页,每个浏览器窗口最初将显示此名称面板。每个窗口可以独立地在面板之间定位。
小结
1. 使用应用程序状态变量存储很少修改但经常使用的数据。
2. 使用会话状态变量存储特定于某个会话或用户的数据。数据全部存储在服务器上。这种方法适于短期的、大量的或敏感的数据。
3. 将少量易失数据存储在非持久性 Cookie 中。数据存储在客户端,在每次请求时发送到服务器,并在客户端结束执行时失效。
4. 将少量非易失数据存储在持久性 Cookie 中。数据存储在客户端直到失效,并在每次请求时发送到服务器。
5. 将少量请求特定的数据存储在视图状态中。数据从服务器发送到客户端并返回。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-04-28
页面传值的几种方法:

1. Response.Redirect (或称 Query String 方式、URL方式)

Response.Redirect("WebForm5.aspx");

首先让我们看看 Response.Redirect 方法,这应该是最简单的了,当我们点击Response.Redirect按钮后触发上面的那行代码即可。在这里跟大家分享一个小技巧:有些时候我们会把上面的代码放在try{ ... }catch() 中去,也就是说当我们捕获异常,并把异常传递给另一个网页。如果我们尝试这样做,也许会得到一个“System.Threading” 异常,这是因为我们跳转到了另外一个页面,而原来的页面线程仍然在运行中。可以这样来解决此问题:

Response.Redirect("WebForm5.aspx",false);

这意味着告诉编译器去“WebForm5.aspx”, 同时“false”参数告诉编译器不要停止在原来页面上的活动, 这方面我们可以参见System.Threading类。
在下面的代码中,“txtName”是待传值的文本框的名字,那个跟在“?”后面的“Name” 是一个临时response变量的标志,它承载了txtName的值。

private void Button1_Click(object sender, System.EventArgs e)
{
// Value sent using HttpResponse
Response.Redirect("WebForm5.aspx?Name="+txtName.Text);
}

OK,到此位置,我们已经完成了Response的传值。但是,我们在"WebForm5.aspx"中怎样接收传来的值呢?不要急,我们将在"WebForm5.aspx"的page_Load事件中写下面的代码。首先,我们要确认传来的值不是“null”,如果不是“null”,我们就可以用Label将这个值显示出来。

注:当我们使用Response.Redirect传递变量时,所有的变量都能在浏览器的URL中看到,我们不能用这种方法来传递重要的机密数据,如信用卡号等。

if (Request.QueryString["Name"]!= null)
Label3.Text = Request.QueryString["Name"];

2. Cookies 方式

接下来是用cookies, Cookies由服务端创建,但保存在客户端,当我们点击“Cookies”按钮时,运行如下代码:

HttpCookie cName = new HttpCookie("Name");
cName.Value = txtName.Text;
Response.Cookies.Add(cName);
Response.Redirect("WebForm5.aspx");

首先,我们创建了一个名叫“cName”的cookie实例,由于一个cookie实例可以保存多个值,我们需要告诉编译器这个cookie将保存“Name”值,并把txtName.Text的值赋给它,并把它加到"输出流” 中,并使用Response.Redirect输出到另外一个网页。
然后让我们看看怎样在目标页面中取出这个cookie中的值:

if (Request.Cookies["Name"] != null )
Label3.Text = Request.Cookies["Name"].Value;

显然,步骤跟上一种方法非常相似,只是使用Request.Cookies代替了Request.QueryString。
注:一些浏览器是不支持Cookies的。

3. Session 变量

接下来我们看看在服务端维持的Session变量。 Session在用户向服务端发出首次请求时被创建,而在用户关闭浏览器或异常发生时终止(其实还有过期的情况)。下面的代码是用Session来传值的例子。 我们可以看到 Session 为用户创建了“Name” 键,并把TextBox的值赋给它。

// Session 创建
Session["Name"] = txtName.Text;
Response.Redirect("WebForm5.aspx");

// 下面的代码显示如何从Session中取值
// 代码放在其它页面中

if(Session["Name"] != null)
Label3.Text = Session["Name"].ToString();

4. Application 变量

有些时候,我们需要一个值能够在所有的页面中访问,这时候我们可以使用Application变量。 如下列代码所示,一旦我们创建了Application变量并赋值,就可以在网站(项目)的所有页面中获得它。

// 为Application变量赋值

Application["Name"] = txtName.Text;
Response.Redirect("WebForm5.aspx");

// 从Application变量中取出值

if( Application["Name"] != null )
Label3.Text = Application["Name"].ToString();

5. Server.Transfer方式(或称HttpContext方式)

我们还可以使用 Server.Transfer方式(或称HttpContext方式)在页面之间传递变量,此时,要传递的变量可以通过属性或方法来获得,使用属性将会比较容易一些。好,让我们在第一个页面中来写一个用来获得TextBox值的属性:

public string GetName
{
get { return txtName.Text; }
}

我们需要使用Server.Transfer把这个值发送到另外一个页面中去,请注意Server.Transfer只是发送控件到一个新的页面去,而并不会使浏览器重定向到另一个页面。所以,我们我们在地址栏中仍然看到的是原来页面的URL。如下代码所示:

Server.Transfer("WebForm5.aspx");

接下来,我们到"WebForm5.aspx"看看:

// You can declare this Globally or in any event you like

WebForm4 w;

// Gets the Page.Context which is Associated with this page

w = (WebForm4)Context.Handler;
// Assign the Label control with the property "GetName" which returns string

Label3.Text = w.GetName;本回答被网友采纳
第2个回答  2010-04-28
public string info(string url)
{
string step = "";
step = this.Request.QueryString["url"].ToString();
if (step != null)
{
...
return step;
}
}
第3个回答  2010-04-28
你这种 就叫做model 模型

C# 用类来获取参数
1:一般来说这种方法通常使用来传递明码参数,也就是不需要保密得参数,同时在使用querystring传值得时候不能传递对象,参数的长度不能大于1024字节(?),当参数中有中文得时候,通常需要使用HttpUlitity.UrlEncode方法来对参数进行编码和解吗。二、使用Session变量使用Session变量传值是一种最常见的方式了,此中方式不仅可以把...

C# 怎么将类作为参数传递?
public static void GetResult(Person p){Console.WriteLine(p.b);}public class Person{public int a { get; set; }public string b { get; set; }}

在c#中如何使用process这个类来获取进程的详细信息
c# 检测cpu使用率 创建一个控制台应用程序,代码如下 代码 using System;using System.Collections.Generic;

c#如何运用类
建类:在项目中建立 A.cs文件,命名 使用类:例如:在某Web页,引用A类的命名空间 然后 A a = new A();现在a就是那个类的实例了,用a点 就可以使用这个类的所有公开的属性及方法了

c#如何获取其他应用程序的启动参数
{ string stitle2 = p.MainWindowTitle;\/\/ p.StartInfo进程启动参数 \/\/ p.StartInfo.FileName \/\/启动文件 \/\/ p.StartInfo.Arguments \/\/启动参数 } Process[] processes = Process.GetProcessesByName(engineExeName);\/\/在进程列表中查找指定的QQ进程 foreach (Process p in processes){ st...

C# 类名 当参数传递
\/\/这里把类对象传过去 } private bool Web_ArrayCallback(class1 c)\/\/这里接受传来的类对象参数 { \/\/这里就可以直接访问类的属性了。 int a=c.i; int b=c.j; if(a>b);\/\/这里将2个属性进行比较,然后返回bool值。 return true; else return false; }测...

C#里GetParametes是什么?
GetParametes是C#里类库里自带的一个获取参数的函数方法...

C#中 如何在一个类中 调用另一个类中的数据?
public Form1(){ InitializeComponent();} 这是无参构造函数可以改 public Form1(ListBox _lb){ InitializeComponent();lb=_lb;} ListBox lb;这样在form1实例化form2的时候就 form2 f2=new form2(listbox1);f2.show();这样在form2里面的lb就是form1的listbox1了 因为类是引用类型所以可以...

C#中类的方法怎么用的?
C#中方法的参数有四种类型:1. 值参数类型 (不加任何修饰符,是默认的类型)2. 引用型参数 (以ref 修饰符声明)3. 输出型参数 (以out 修饰符声明)4. 数组型参数 (以params 修饰符声明)=== 1.值传递: 值类型是方法默认的参数类型,采用的是值拷贝的方式。也就是说,如果使用的是值类型...

如何获取参数的个数【C#】
using System.Reflection;...Type t = typeof(类名称);MethodInfo mi=t.GetMethod(函数名称);mi.GetParameters().Count 就是函数的参数个数

相似回答