如何在两个网页之间共享数据?

时间:2017-11-14 10:24:15

标签: c# asp.net visual-studio-2010 asp.net-webpages

我正在尝试开发一个网络应用项目,并尝试弄清楚如何在第二个网页上显示我的答案。

我在我的第一个网页上放了一个文本框并更正了我的应用程序的编码,因为我在调试后在文本框中收到了正确的答案。

理想情况下,我想删除此文本框,并希望我在我的文本框中显示的答案显示在下一个网页的标签上。这是我的代码的计算部分;

var cost = ((int)duration.TotalMinutes) * 0.35m;
                txtCost.Text = cost.ToString("c");

我想让我的答案出现在我的第二个网页上,而不是在第一个网页上显示。我尝试在第一个网页Session["Cost"] = cost;的按钮点击事件处理程序中使用double cost = (double)(Session["Cost"]); lblDisplay.Text = cost.ToString("c"); 这是在第二个网页上,但每次我调试并运行时,我的标签上总会显示$ 0.00。有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

在MVC应用程序中的两个视图之间共享值,请尝试以下

// To save into the Cache    
System.Web.HttpContext.Current.Cache["CostKey"] = cost;

// To retrieve Cache Value
var cachedValue = System.Web.HttpContext.Current.Cache["CostKey"] as double;

对于会话状态,请查看此link

答案 1 :(得分:0)

在ASP.NET WebForms应用程序中,您可以通过各种方式传递数据:

  1. 缓存

    有关示例,请参阅学习曲线答案。 但是,如果服务器遇到内存不足或类似问题,则无法保证再次找到放入缓存中的对象。 ASP.NET管理缓存并自行驱逐对象以维护内存可用性。这与ApplicationStateSessionState形成对比,其中对象一直保留,直到手动删除,或Application结束或Session到期。

  2. 会话和应用程序状态

    您可以在SessionState object中放置任何对象,并在代码中的其他位置检索它。但是,您需要在SessionState接受object - s时适当地强制转换它。例如。如果你存储一个数字,当你检索它时,你必须自己进行投射,就像你已经做过的那样。 它不起作用的原因可能是你试图从另一个用户的SessionState中检索它。是的,SessionState是每用户结构。如果您需要从一台设备添加值,并在另一台设备上使用use ApplicationState

    Application["cost"] = cost;
    
  3. 重定向响应

    使用此技术,您可以强制浏览器从服务器请求另一个页面并指定完整的查询字符串,包括您需要的变量。例如。 :

    var destination = Server.UrlEncode("/someOtherPage.aspx?cost=34.65");
    Response.Redirect(destination);
    

    作为替代方案,您可以使用Server.Transfer("someOtherPage.aspx")来保存往返。但是,在这种情况下,浏览器不会更改地址栏中的地址,因此用户误导她浏览一个页面,但事实上,它是someOtherPage.aspx