2011-12-09 14 views
0

何らかの理由で、私は打撃を受けることができません。私は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 

そして、ここでは、プロジェクトの構造である:

Project Structure

私は何をしています行方不明?

+0

あなたのコードブロックは、リターンRedirectToAction(「インデックス」... 'しかし、あなたのインラインコードは'リターンRedirectToAction(「リスト」を言う... ''と言う...この質問にタイプミスがある可能性があります。 –

+0

@ScottRippey:回答 –

+0

で修正されました。質問を変更したので問題はありません。「リスト」にリダイレクトし、「リスト」がヒットし、「インデックス」がヒットしません。問題は? –

答えて

0

コードに基づいて、AddToCart()のListアクションではなくIndexアクションにリダイレクトされているようです。

Return RedirectToAction("Index", New With {.returnUrl = returnUrl}) 
+0

**コードはインデックスにリダイレクトされますが、あなたが見ているのは、私が作成した別のリストへの私の健全性チェックです。 –