2014-09-05 56 views
0

这是一个非常普遍的问题,但在我的情况下,我正在使用ASP和C#。我有以下情况:跨多页传递参数

第1页:

两个HTML选择,都与班nameSelectsurnameSelect。当用户更改这些选择中的任何一个时,我将该值放入一个名为hfNamehfSurname的隐藏字段中。然后,当我点击一个可以进入详细视图的按钮时,我使用javascript生成链接并通过GET传递&name=111&surname=222

第2页:

我已经知道哪些参数可以在此页中传递,因此我有两个隐藏字段:hfNamehfSurname。我从GET中获取值,如果用户返回面包屑导航,我会将用户带回&name=111&surname=222的上一页,这会自动将选择设置为以前的值。

正常的情况:

在正常情况第2页不会使用namesurname作为内容的参数,这样的参数是没有问题的。如果第2页也有两个选择,称为nameSelectsurnameSelect,这不是问题。用户可以在第2页上更改这些值,当我返回第1页时,可以更新这些值,例如到333444

问题:

,当我在同一时间通过的name多个版本出现的主要问题。如果第2页是人员列表,则可能发生这种情况,因此单击一行可能需要传递name参数(请记住这是一个示例)。这意味着如果我返回到第1页,name值将被设置,但不是因为我从select中选择了它,而是因为我点击了第2页上的按钮。这是不正确的,因为name参数的范围在单击按钮时该行仅在详细信息页面内(第3页)。

可能的解决方案

我想的是加入未用于内容例如参数之前一个关键字时,将第一溶液filterNamefilterSurname。这会产生它自己的问题,因为我有时会希望name/surname值在内容中使用。如果我进行混音并且有时只输入filterNamesurname,那么管理变得非常困难,因为我有许多不同名称的参数。

有没有一些真正明显的解决方案,我在这里失踪或是真的无法让系统变得比我已经做得更简单?

感谢

+1

我会建议做的是**类(DTO对象)**并根据您的要求定义属性,然后将其作为参数传递给方法**使用** Post **而不是**获取** – 2014-09-05 08:40:13

回答

0

正如在注释中我将创建一个类用默认设置,并保存到会话,然后从这里开始了我会检查,如果它不存在设置会话数据如果它使用会话中的值,它会转换为新类。

获取或发布并不重要。然后,我会在页面加载代码上加载类,然后通过get或post变量更新类,然后将其保存回会话。