在下面我试图在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
答案 0 :(得分:1)
这根本不可能。
每个HTTP请求都有一个单独的控制器实例;他们不分享任何东西。
您应该根据需要使用Cookie,会话,应用程序状态或缓存。
在您的情况下,您可能应该在POST中将该变量包含在<form>
的其他操作中。
答案 1 :(得分:0)
如果您不想添加正式的帖子参数,可以使用
TempData.Add("P", P);
在return语句之前,在ListOfVeicles中,您可以通过
进行访问string p = TempData["P"];
临时数据仅在请求范围内有效
编辑:对不起C#语法,我从没用VB,因为过去的好日子VB VB 6