SharePoint中的WebParts中的ViewState和会话变量是否有误?

时间:2009-08-13 10:12:31

标签: sharepoint viewstate

我使用ViewState在sharepoint上将一些数据从一个页面保存到另一个页面,当我在Page_Load事件中写这行时,我收到一个错误,但它没有说什么。任何线索?

 Label l = new Label();
 l.Text = ViewState["user"].ToString();

还有这个

Session["user"] = (sender as LinkButton).Text;

4 个答案:

答案 0 :(得分:4)

  

我正在使用ViewState来保存一些数据   从一个页面到另一个

也许我误会但是不查看状态只适用于当前页面?您不能在一个页面上存储处于视图状态的内容,而是从另一个页面再次加载它。 MSDN文章Understanding ASP.NET View State可能会有所帮助。

要在页面之间传输数据,您应该查看会话状态或ASP.NET缓存等内容。

<强>更新

你需要找出那个错误是什么。关闭web.config中的自定义错误,以便查看全文(有关详细信息,请参阅step 3 of this article)。

很可能你在管理ASP.NET页面生命周期方面有些不对劲。如果您不熟悉它,thisthis资源将有所帮助。

答案 1 :(得分:1)

如果您的错误“没有说什么”,您可能希望启用更详细的错误。

要执行此操作,请编辑SharePoint网站的web.config文件并进行所述更改here

通过此操作,您可以进行更明智的故障排除。

答案 2 :(得分:1)

在pages部分的web.config中启用Sessionstate:

<pages enableSessionState="false" ...
但请注意,如果您正在运行多机场(即超过1个Web前端/应用服务器),则需要基于SQL Server的会话(或asp.net状态服务)。

我建议您在启用它之前阅读有关SharePoint和会话状态的内容。

P.S。您也可以为每个页面启用会话状态,但同一个警告适用于多个计算机场(

答案 3 :(得分:0)

当您为查看状态编写值时,它将以加密字段存储在该页面上。它仅在该页面上可用。如果您有一个回发的页面,这是可以的。

在请求之间存储信息还有其他几种选择:

  • 将其作为查询字符串发送
  • 将其存储在内存或数据库中的会话中
  • 将其存储在数据库或文件系统中 ....

在您的情况下,最简单的可能是使用会话状态。

要启用会话状态,请按照此链接中的说明进行操作:

http://msdn.microsoft.com/en-us/library/ms972429.aspx