ASP.NET - 参数的隐藏字段

时间:2009-06-30 22:44:42

标签: asp.net

我正在处理一个ASP.NET应用程序。此应用程序的要求之一是不使用查询字符串参数。原因是客户认为它看起来很脏而且不专业。此外,也不能使用会话变量。为了克服这些挑战,我决定使用runat =“server”隐藏的html元素。

挑战在于,页面被重定向到自身。原因是页面代表10页列表中的模板。如果用户单击“下一步”,则应用程序需要更新第二页的信息。如果用户点击“上一个”,则需要进行相反的操作。

如何读取/设置隐藏的HTML字段,以便我可以在后续页面请求中访问所需的值?

谢谢!

6 个答案:

答案 0 :(得分:4)

这是ViewState属性的用途。它可以让你在往返过程中持续存在物体。

答案 1 :(得分:2)

您可以像文本输入一样访问隐藏输入的value属性。

hiddenFieldPage.Value = "2"; // page 2!
if (hiddenFieldPage.Value == "2")
    // show page 2!

您可能需要包含System.Web.UI.HtmlControls。另外,我似乎记得一个asp:hidden控件,它基本上是WebControls命名空间中隐藏输入的包装器。

答案 2 :(得分:2)

使用viewstate,是您情况的最佳选择:

// Storing a student in view state.
Student stud = new Student("John", "Doe");
ViewState["CurrentStudent"] = stud;

// Retrieve a student from view state
Student stud = (Student) ViewState["CurrentStudent"];

您需要注意的是,您的类必须可序列化才能存储在视图状态中。

This is a nice tutorial to help you through.

答案 3 :(得分:1)

ASP.NET使用LosFormatter class来序列化视图状态。从本质上讲,你正在做类似的事情。只需将所需数据存储在对象中,并将其序列化为隐藏表单字段。使用Request.Form["..."]获取值并将其反序列化。

答案 4 :(得分:0)

根据我在这里阅读的一些小信息,我猜测向导控制可能适合你吗?

除此之外,你可以使用Cross Page Postback。它没有查询字符串或会话。

答案 5 :(得分:0)

如果你有

<asp:HiddenField ID="ObjectID" runat="server" />

然后

<asp:ControlParameter ControlID="ObjectID" Name="Parameter's name" PropertyName="Value" Type="Int32" />