2

我正在尝试使用 Sessions 将变量从一个页面传递到另一个页面,但它们似乎没有效果。在剃刀语法里面的源页面

    Session["variable"] = "value";

在目标页面中:

    <p>@Session["variable"].ToString()</p>

但我收到服务器错误

    Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

任何建议都将受到欢迎........谢谢

4

1 回答 1

1

我只能让它与铸造一起工作:

<p>@(string)Session["variable"]</p>

尽管我已经很长时间没有尝试使用它了ToString(),但我确实清楚地记得我尝试调用 Session 变量的尝试只有在使用强制转换选项时才能成功,尽管我听说这ToString()应该有效。无论哪种方式,我总是让它与铸造一起工作。

话虽如此,我觉得我应该警告你,如果你只是想在页面之间传递数据,你根本不应该使用 Session 变量。在执行此操作之前,请使用隐藏的表单字段、查询字符串、Url 数据,甚至 cookie 和/或数据库。

我喜欢将 Session 变量视为可以快速解决非常特殊情况的东西,并且只能非常小心地使用。总是期望该值为 null 并在使用它之前测试它的值。

有关使用 WebMatrix 在网页之间传输数据的选项的帮助,请查看 Mike Brind 非常有用的网站: http: //www.mikesdotnetting.com/Article/192/Transferring-Data-Between-ASP.NET-Web-Pages <-- You'll want to bookmark this for now. It is right up the alley of what you are getting yourself into with WebMatrix.

如果您仍然想使用 Session 变量并且强制转换不起作用,那么我认为会导致错误的唯一另一件事是您期望的值Session["variable"]不是您认为的那样。

作为记录:

我只是想说明一点,“甚至是在你这样做之前的 cookie 和/或数据库”请不要使用这些选项,因为在你的情况下它们可能很糟糕(而且,cookie 只会给你同样的问题实际上是会话变量)。无论如何,这实际上完全取决于您如何使用数据,以及您是否始终检查以确保在会话变量和/或 cookie 的情况下该值没有被清除。

于 2013-07-24T18:38:23.963 回答