Почему это действие не ударило? - PullRequest
0 голосов
/ 10 декабря 2011

По какой-то причине я не могу получить действие для удара.Я использую 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

Я не уверен, что она актуальна, но, возможно, стоит отметить, что я создал действие View для Index, но позже удалил и заново создал его.

В качестве проверки работоспособности я затем создал другое действие с именем List , котороеидентичен действию Index , и это действие получает удар (опять же, проверяется точкой останова)

Это код моего контроллера в целом:

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

Чего мне не хватает?

1 Ответ

0 голосов
/ 10 декабря 2011

Судя по вашему коду, вы перенаправляете на действие Index, а не на действие List, из AddToCart ().

Return RedirectToAction("Index", New With {.returnUrl = returnUrl})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...