UPDATE 2UrlHelper.Action nie mapuje do obszaru że regulator jest prawidłowo
Ok - Tak wygląda moje pytanie ponownie nieznacznie się zmienia :-)
Uświadomiłem sobie teraz, gdy UrlHelper.Action wydaje się nie poprawiać poprawnie adresu URL w żadnym obszarze, chyba że nazwa obszaru jest jawnie określona. Jeśli nie jest określony, wydaje się, że zwraca nazwę obszaru, w którym aktualnie się znajdujemy, co sprawia, że wygląda on tak, jakby działał z jednej części witryny, ale wtedy ten sam link w innym obszarze rozwiązuje problem z nieprawidłową nazwą obszaru.
Albo zrobiłem coś fajnego, żeby to zrobić, albo nie do końca rozumiem, jak ta metoda działania ma działać.
UPDATE 1
mogę dokonać tej pracy, wykonując następujące czynności:
return helper.Action("add", "product",new {area = "storemanagement"});
która zmienia moje pytanie nieznacznie.
Jak to się dzieje, że routing MVC nie rozróżnia kontrolerów o tej samej nazwie i nie rozwiązuje tego z określoną metodą działania?
Origional zakładać
Hej wszyscy,
Utworzyłem metody pomocnika w klasie UrlHelper i mam mały problem z jedną z tras.
Oto kod dla metody pomocnika w pytaniu:
public static string AddProduct(this UrlHelper helper)
{
return helper.Action("add", "product");
}
Mam zasadniczo dwa kontrolery o nazwie „produkt”, które znajdują się w różnych miejscach na stronie. Jeden z nich służy do przeglądania produktów, a drugi do zarządzania produktami. Tylko jeden z kontrolerów produktu zawiera metodę działania "Dodaj".
Kiedy wyjście I wartość addProduct
<%: Url.AddProduct() %>
Nazwa obszar został rozwiązany w bieżącym obszarze Mam przeglądanie i nie właściwym miejscu dla kontrolera produktu zawierającego metodę dodawania działania.
Czy jest coś, co muszę ustawić na trasach? Nie jestem do końca pewien, w jaki sposób routing działa z UrlHelper.Action, więc nie wiem, czy można zrobić to, co próbuję.
Wiwaty za pomoc.
spróbuj dodać kontroler i obszar nazwa jako dodatkowe argumenty używające tej metody sig 'UrlHelper.Action Method (String, String, Object)' – Ahmad
Dzięki Ahmad. To faktycznie działa, więc dodam go jako aktualizację mojego pytania. Nadal interesuje mnie, dlaczego system routingu nie rozróżnia dwóch kontrolerów, a zamiast tego wydaje się, że rezygnuje i zakłada korzystanie z bieżącego obszaru. –
, aby odpowiedzieć na twoje pytanie, należy zagłębić się w wewnętrznych ramach MVC, aby dowiedzieć się, dlaczego tak się dzieje. W każdym razie, z tego, co widziałem tylko wartości tras "kontrolera" i "działania", są traktowane w specjalny sposób, tj. Obszar jest w pewnym sensie wywnioskowany/przyjęty w oparciu o to, skąd dzwonisz do pomocnika. Zatem potrzeba określenia parametru obszaru. – Ahmad