1

在 asp.net 页面上,我正在使用选项卡,其中一个选项卡具有用户控制权。

在第一个选项卡上,正在显示表 A 中的数据,第二个选项卡(具有用户控制)正在从表 B 中获取数据。

在用户控件(第二个选项卡)上,我需要显示表 A 的列值。它只是一个字符串值。

我想知道是否有任何最好的方法来显示表 A 列的值而不调用数据库?

代码的设计方式,我无法从第一个选项卡访问用户控件的文本框。

我只能考虑使用视图状态或会话,但不知道是否应该使用它们而不是调用 DB。

我希望在当前页面的生命周期中存在价值。

4

3 回答 3

2

如果您可以将其保存在视图状态中,那就去吧。但是除了 viewstate 之外,还有很多存储选项:

  • 查询字符串(适用于 ID,不适用于字符串)
  • 饼干(很简单)
  • 本地存储(仅限 HTML 5)
  • 缓存(您仍然可以进行调用,但只是缓存了结果。然后您还必须处理缓存过期)
  • session (正如您所提到的,这基本上是每个人的缓存使用,但不是一个坏选择)
  • 隐藏字段(基本上是什么视图状态)

即使有所有这些选项,视图状态也将是一个非常好的选项,但它只要求您在每次需要该值时回发视图状态。

于 2013-08-25T15:29:30.860 回答
0

用js从tab1复制数据内容怎么样?您是否使用 ajax 在选项卡中加载用户控件?

于 2013-08-25T16:47:32.417 回答
0

如果您有一个复杂的表单并且需要拆分成更小的块,我会使用一个多视图控件,该控件具有完成任务所需的尽可能多的视图。如果您使用自己的控件、验证组和逻辑设计每个视图,.net 将完成其余的工作,您不必手动处理状态或保存中间步骤

<asp:MultiView ID="MultiView1" runat="server">
    <asp:View ID="View1" runat="server">
        <asp:TextBox ID="txt1" runat="server" />
        <asp:Button ID="Button1" runat="server" Text="Next" OnClick="NextStep_Click" />
    </asp:View>
<asp:View ID="View2" runat="server">
    <asp:TextBox ID="txt2" runat="server" />
    <asp:Button ID="Button2" runat="server" Text="End" OnClick="EndProcess_Click" />
</asp:View>  
</asp:MultiView>
<asp:TextBox ID="txt3" runat="server" />

在后面的代码中

protected void NextStep_Click(object sender, EventArgs e)
{
    MultiView1.SetActiveView(View2);
    txt2.Text = txt1.Text;
}

protected void EndProcess_Click(object sender, EventArgs e)
{
    txt3.Text = txt1.Text + " " + txt2.Text;
}

您可以来回切换您想要的时间,而不必担心用户输入的值。显然,您必须放置按钮才能返回并设置所需的活动视图。

于 2013-08-25T18:02:06.953 回答