Wywołanie funkcji w stronie razor

0

Cześć napisałem funkcję która sprawdza czy produkt nalezy do danej osoby czy nie i mojej pytanie brzmi jak taką funkcję mogę wywołanie na stronie razor ?
Funkcja jest w kontrolerze Order

        public bool isYourProduct(string userId,int productId)
        {
            var userProduct = productService.GetById(productId).User.Id;
            if (userId == userProduct) return true;
            else return false;
        }
        public bool isYourProduct(string userId, int productId)
        {
            userId = User.Identity.GetUserId();
            return orderManager.isYourProduct(userId,productId);
        }

oraz


            <h1>Popularne</h1>
            @foreach (var item in Model.Bestsellers)
            {
                <div class="col-md-4">
                    <h2><a href="@Url.Action("Details", "Product", new { id =item.Id })">@item.Title</a></h2>
                    <p>Cena: @item.Price</p>
                    <p>Ilość: @item.Quantity</p>
                    <p>Dodany: @item.DateOfAddition</p>
                    @if() { ???
                    <p><a class="btn btn-default" href="@Url.Action("AddBasket", "Order", new { id = item.Id })">Dodaj do Koszyka &raquo;</a></p>
                       }

                </div>
            }
1

Możesz przesłać np. w ViewData słownik klucz-wartość typu productId (long) - isYourProduct(bool), który 'uzupełnisz' powyższą metodą (funkcją...) a następnie sprawdzisz ten słownik w widoku.

Trochę trudniej - to rozszerzyć model bestsellers (o ile to ViewModel, a jeśli nie no to utworzyć taki na Twoje potrzeby).

Jeszcze inna opcja, to stworzenie tej metody jako UrlAction, który zwróci w Partialu to:

<p><a class="btn btn-default" href="@Url.Action("AddBasket", "Order", new { id = item.Id })">Dodaj do Koszyka »</a></p>
                       }

jeśli warunek zostanie spełniony.

1
Michał Warmuz napisał(a):
if (userId == userProduct) return true;
else return false;

Powyższy kod możesz zapisać w krótszy sposób:

return userId == userProduct;

Twój problem możesz rozwiązać umieszczając w widoku modelu dodatkową właściwość typu bool oznaczającą, czy produkt należy do użytkownika. W takim przypadku Twój warunek w widoku będzie mógł wyglądać w taki sposób:

@if (item.IsProductOfCurrentUser) 
{
    <p><a class="btn btn-default" href="@Url.Action("AddBasket", "Order", new { id = item.Id })">Dodaj do Koszyka »</a></p>
}

Twoja funkcja isYourProduct zamiast w kontrolerze powinna znajdować się w serwisie.

0

Dziękuje za pomoc :) Wszystko działa :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1