何らかの理由で、私は打撃を受けることができません。私はRedirectToAction
を使用して、あるアクションから別のアクションにフローを渡しますが、その機能は入力しません。このアクションがヒットしないのはなぜですか?
Public Function AddToCart(productId As Integer, returnUrl As String) As RedirectToRouteResult
Dim product As Product = Me.Repository.Products _
.FirstOrDefault(Function(p) p.ProductId = productId)
If Not IsNothing(product) Then
Me.Cart.AddItem(product, 1)
End If
Return RedirectToAction("Index", New With {.returnUrl = returnUrl})
End Function
(ブレークポイントによって検証):
は、ここで最初のアクションです。 。Return RedirectToAction("List", New With {.returnUrl = returnUrl})
経由で呼び出され、その後のアクション(インデックス)がヒット(も
これはインデックスアクション機能であるブレークポイントによって検証されることは決してありません:
Public Function Index(returnUrl As String) As ViewResult
Dim cartIndexViewModel As New CartIndexViewModel() With { _
.Cart = Me.Cart, _
.ReturnUrl = returnUrl _
}
Return View(cartIndexViewModel)
End Function
私はそれが関連しているかわからないが、それは価値があるかもしれません私はindexアクションのためのビューを作成したが、後で削除し、それを再作成することを注意する。正気として
が、私はその後、 インデックスアクションと同じです 一覧という名前の別のアクションを作成してチェックして、このアクションはありませんヒットするブレークポイントによって検証AIN)これは、その全体が私のコントローラのコードです:
Imports SportsStore.Domain
Namespace SportsStore.WebUI
Public Class CartController
Inherits System.Web.Mvc.Controller
#Region "Properties"
Public Property Cart As Cart
Get
If IsNothing(Session("Cart")) Then
Session("Cart") = New Cart()
End If
Return CType(Session("Cart"), Cart)
End Get
Set(value As Cart)
Session("Cart") = value
End Set
End Property
Private _Repository As IProductRepository
Private Property Repository() As IProductRepository
Get
Return _Repository
End Get
Set(ByVal value As IProductRepository)
_Repository = value
End Set
End Property
#End Region 'Properties
#Region "Constructors"
Public Sub New(repository As IProductRepository)
Me.Repository = repository
End Sub
#End Region 'Constructors
#Region "Actions"
'
' GET: /Cart
Public Function AddToCart(productId As Integer, returnUrl As String) As RedirectToRouteResult
Dim product As Product = Me.Repository.Products _
.FirstOrDefault(Function(p) p.ProductId = productId)
If Not IsNothing(product) Then
Me.Cart.AddItem(product, 1)
End If
'DOES NOT WORK
'Return RedirectToAction("List", New With {.returnUrl = returnUrl})
'WORKS
Return RedirectToAction("Index", New With {.returnUrl = returnUrl})
End Function
Public Function RemoveFromCart(productId As Integer, returnUrl As String) As RedirectToRouteResult
Dim product As Product = Me.Repository.Products _
.FirstOrDefault(Function(p) p.ProductId = productId)
If Not IsNothing(product) Then
Me.Cart.RemoveLine(product)
End If
Return RedirectToAction("Index", New With {.returnUrl = returnUrl})
End Function
Public Function List(returnUrl As String) As ViewResult
Dim cartIndexViewModel As New CartIndexViewModel() With { _
.Cart = Me.Cart, _
.ReturnUrl = returnUrl _
}
Return View(cartIndexViewModel)
End Function
Public Function Index(returnUrl As String) As ViewResult
Dim cartIndexViewModel As New CartIndexViewModel() With { _
.Cart = Me.Cart, _
.ReturnUrl = returnUrl _
}
Return View(cartIndexViewModel)
End Function
#End Region 'Actions
End Class
End Namespace
そして、ここでは、プロジェクトの構造である:
私は何をしています行方不明?
あなたのコードブロックは、リターンRedirectToAction(「インデックス」... 'しかし、あなたのインラインコードは'リターンRedirectToAction(「リスト」を言う... ''と言う...この質問にタイプミスがある可能性があります。 –
@ScottRippey:回答 –
で修正されました。質問を変更したので問題はありません。「リスト」にリダイレクトし、「リスト」がヒットし、「インデックス」がヒットしません。問題は? –