问个C#通过url传递参数的问题

秋风破浪 2014-01-10 04:12:13
如何在url中传递实体,例如
url=sssss.aspx?id=1,是传递id=1的参数到ssss.apsx 那么如何传递一个实体过去,并且如何在ssss中接收这个实体
...全文
558 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wang-Yucai 2014-01-13
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
[quote=引用 6 楼 wangyucai0915 的回复:] 还是用序列化吧。

string GetString(Person p)
{
    byte[] inData = new BinaryFormatter().Serialize(p);
    return HttpUtility.UrlEncode(Convert.ToBase64String(inData));
}

void Button_Click(object sender, EventArgs e)
{
    this.Response.Redirect(string.Format("http://www.myurl.com?obj={0}", this.GetString(new Person())));
}
到接收页面执行反序列化就好了。
晕!呵呵 如果进行base64编码,你就丝毫没有必要整什么 UrlEncode 了!base64编码不需要再进行处理。[/quote] 我记得在执行Base64之后,会出现+号类似的特殊字符。调用这个函数只不过是为了转义一下。
  • 打赏
  • 举报
回复
你把拼接url的代码写成一个通用函数(参数之一是要拼接的object类型的参数),那么就是你自己的模型。
skyandcode 2014-01-10
  • 打赏
  • 举报
回复
如果是 asp.net web form 里像楼上说的,序列化成 Json 数据传输; 如果是 asp.net mvc 有模型绑定机制,很轻松实现。
  • 打赏
  • 举报
回复
引用 6 楼 wangyucai0915 的回复:
还是用序列化吧。

string GetString(Person p)
{
    byte[] inData = new BinaryFormatter().Serialize(p);
    return HttpUtility.UrlEncode(Convert.ToBase64String(inData));
}

void Button_Click(object sender, EventArgs e)
{
    this.Response.Redirect(string.Format("http://www.myurl.com?obj={0}", this.GetString(new Person())));
}
到接收页面执行反序列化就好了。
晕!呵呵 如果进行base64编码,你就丝毫没有必要整什么 UrlEncode 了!base64编码不需要再进行处理。
  • 打赏
  • 举报
回复
对象的序列化可以采取json格式。如果序列化后内容不长,你可以使用Get命令、通过url参数传送。 例如要传送对象x,首先可以将对象序列化为json字符串s,然后将它使用 UrlEncode(...) 编码,再拼入你的url字符串中 id= 后边的位置上,这样这里就不是传送字符 1,而是传送一个 json 对象了。 如果序列化内容比较长,则可以采用Post命令方式来传送。 或者也可以采用直接在消息体中包括完整的json字符串的方式,客户端采用代码 new WebClient().UploadString(url, json) 即可提交对象,然后服务器端你的程序(例如asp.net的ashx网站服务程序)读取这个json字符串,反序列化为已知类型的对象,执行此对象的处理程序,将返回结果对象再序列化为json字串返回。
wind_cloud2011 2014-01-10
  • 打赏
  • 举报
回复
(1) send.asp代码 代码如下: public string Name { get { return "honge"; } } protected void Button1_Click(object sender, EventArgs e) { Server.Transfer("Default2.aspx"); } (2) receive.aspx代码 代码如下: send d = Context.Handler as send ; if (d != null) { Response.Write(d.Name);//这样可以得到参数值。 }
Wang-Yucai 2014-01-10
  • 打赏
  • 举报
回复
还是用序列化吧。

string GetString(Person p)
{
    byte[] inData = new BinaryFormatter().Serialize(p);
    return HttpUtility.UrlEncode(Convert.ToBase64String(inData));
}

void Button_Click(object sender, EventArgs e)
{
    this.Response.Redirect(string.Format("http://www.myurl.com?obj={0}", this.GetString(new Person())));
}
到接收页面执行反序列化就好了。
  • 打赏
  • 举报
回复
引用 4 楼 rzxys 的回复:
[quote=引用 1 楼 starfd 的回复:] 你可以序列化成字符串、Json、XML之类的传递过去,然后那边代码里面反序列化
这样的话就要用到ajax了吧[/quote] get方式跟ajax有什么关系。。。。
秋风破浪 2014-01-10
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
你可以序列化成字符串、Json、XML之类的传递过去,然后那边代码里面反序列化
这样的话就要用到ajax了吧
wanghui0380 2014-01-10
  • 打赏
  • 举报
回复
google"webapi httpclient" 这个不是单方面说传啥就传啥滴,必须双方规定好 当然现在已经有这方面的规定,服务器端使用webapi提供,而客户端使用httpclient类提交
Theflybird 2014-01-10
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
你可以序列化成字符串、Json、XML之类的传递过去,然后那边代码里面反序列化

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧