无法从同一类的不同方法/函数访问类级别私有变量

时间:2011-11-23 14:28:01

标签: asp.net asp.net-mvc variables private

在下面我试图在Class级别定义一个名为_p的私有变量。索引的HTTP.POST将带来一个用户提供的值,我将设置此私有变量。在名为ListOfVehicles的第二个方法中,我将访问此变量。

现在理论上一切都没问题,但是当我尝试访问这个私有变量时,我什么都没得到,这就找不到了。

Public Class QuotationController
  Inherits System.Web.Mvc.Controller

  'Private Variables
  Dim _p As String

  'Get Basic pickup and dropoff details
  Function Index() As ActionResult
    Return View()
  End Function

  'Function to get basic details out of the view
  'and to redirect to ListOfVehicles
  <HttpPost()>
  Function Index(ByVal P As String, ByVal D As String) As ActionResult
    _p = P
    Return RedirectToAction("ListOfVehicles")
  End Function

  'Show list of vehicels
  Function ListofVehicles() As ActionResult
    ViewData("UserChoice") = "Pickup: " & _p 
    vehicleList = QB.GetQuotation(_p, _d)
    Return View(vehicleList)
  End Function

End Class

2 个答案:

答案 0 :(得分:1)

这根本不可能。

每个HTTP请求都有一个单独的控制器实例;他们不分享任何东西。

您应该根据需要使用Cookie,会话,应用程序状态或缓存。

在您的情况下,您可能应该在POST中将该变量包含在<form>的其他操作中。

答案 1 :(得分:0)

如果您不想添加正式的帖子参数,可以使用

TempData.Add("P", P);

在return语句之前,在ListOfVeicles中,您可以通过

进行访问
string p = TempData["P"];

临时数据仅在请求范围内有效

编辑:对不起C#语法,我从没用VB,因为过去的好日子VB VB 6