Невозможно получить доступ к закрытым переменным уровня класса из разных методов / функций одного и того же класса - PullRequest
0 голосов
/ 23 ноября 2011

Далее я пытаюсь определить частную переменную на уровне класса с именем _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 ]

1 голос
/ 23 ноября 2011

Это принципиально невозможно.

Каждый HTTP-запрос получает отдельный экземпляр контроллера;они ничего не разделяют.

Вы должны использовать файлы cookie, сеанс, состояние приложения или кэш-память, в зависимости от ситуации.

В вашем случае вам, вероятно, следует включить эту переменную в POST длядругие действия от <form>.

0 голосов
/ 23 ноября 2011

Если вы не хотите добавлять формальный параметр записи, вы можете использовать

TempData.Add("P", P);

непосредственно перед оператором возврата, в вашем ListOfVeicles вы можете получить доступ через

string p = TempData["P"];

Временные данные действительны только в пределах объема запроса

РЕДАКТИРОВАТЬ: извините за синтаксис C #, я не использую VB, так как старые добрые времена VB 6

...