2010-07-25 155 views
1

什么是查询字符串传递到另一个页面的最佳方式,我会definitly避免像使用.......通过查询字符串参数

<a href="Page2.aspx?WONumber=12345"> 

有什么更好的办法?

我在想创建一个基本类与几个道具和更新基类?

谢谢。

+1

更好的感觉?就像这些人说的是你对上述路线安全性,一般性,你没有强大的打字的事实,你的事实;你在多个地方定义你的参数的名字......任何“更好”的解决方案取决于什么问题是要解决的。 – 2010-07-26 00:20:17

回答

0

您可以加密查询参数,如果安全性是您的关心。

或者您可以使用其他持有者,例如上述的p.cambell说明(会话& cookie)。

您也可以将其存储在数据库中,然后让您访问的页面检索它。

只取决于您的应用需求。

我做的另一件事是使用<asp:panel>,基本上使用单个页面,就像它是多个页面一样。这样,我也可以访问viewstate来保存我的变量。 (每当用户点击'下一个',或者他们点击的任何东西来转到下一页时,我只隐藏他们所在的面板,并显示他们想要转到[可见=真/假]属性的面板)

1

这听起来像你想采取查询字符串参数,并在随后的页面中使用它。

如果它不希望从当前页面传递转发该查询字符串参数,也许这就是所谓的page1.aspx,无需使用其他查询参数,你可以:

  • Session值。考虑Session["WoNumber"] = Request.QueryString["WONumber"].ToString();

  • 将值存储在Cookies中。你可以使用类似:Response.Cookies["WoNumber"].Value = Request.QueryString["WONumber"].ToString();

1

这真的取决于你从哪里获得价值。你可以使用UriBuilder来构建一个URL,或者如果它足够简单的话,字符串连接就可以(尽管你必须确保Server.UrlEncode的值)。

如果这个值是一个常量,就像你的例子所暗示的那样,把它直接放到查询字符串中没有什么问题,尽管我仍然会使用一个正确的命名常量,例如。

<a href="Page2.aspx?WONumber=<%= TheMagicOrderNumber %> 

与定义的常量隐藏代码:

protected const int TheMagicOrderNumber = 12345 
1

如果你的反对意见是“神奇字符串” URL中的可维护性,你准备使用按钮,而不是一个锚,你可以做得更差

<form method="GET" action="Page2.aspx"> 
    <input type="hidden" name="WONumber" value="12345" /> 
    <input type="submit" value="Navigate" /> 
</form> 

这种方法将推广到任何复杂的任意数量的参数的查询字符串。

1

有前我碰到了几个月出现了大文章的时候我一直在寻找与查询字符串增强的安全性......

http://devcity.net/Articles/47/1/encrypt_querystring.aspx

这是一个很好的文章,并有奖金笔者报价C#和VB.NET中的代码示例。

有些时候,我更喜欢在会话中使用查询字符串...少量的会话对象可以,但太多了,开始变得有点繁琐的调试问题。