2009-08-03 6 views
5

Domyślny kod, który generuje dla VS jest HomeController:Czy można używać adresu URL bez nazwy funkcji kontrolera w ASP .NET MVC?

<HandleError()> 
Public Class HomeController Inherits System.Web.Mvc.Controller 

    Function Index() As ActionResult 
     ViewData("Message") = "Welcome to ASP.NET MVC!" 

     Return View() 
    End Function 

    Function About() As ActionResult 
     Return View() 
    End Function 
End Class 

Załóżmy, że chcę utworzyć inny adres URL o stronie bez zmiany nazwy metody. Próbowałem:

' 
' GET: /Home/Aboutblah 

Ale to nie działa. Kiedy idę do http://localhost:1957/Aboutblah, otrzymuję 404 z serwera ASP .NET.

W związku z tym zastanawiałem się, czy blob "GET" tekstu faktycznie robi cokolwiek i czy można skrzypić z adresami URL bez przechodzenia do pliku ASAX.

Odpowiedz

4

Ponadto, można ozdobić metodę z atrybutem:

[ActionName("Aboutblah")] 

Jamesa

EDIT Właśnie zauważyłem używasz VB. Będziesz musiał przetłumaczyć na VB, być może:

<ActionName("Aboutblah")> 

?

Również tak, komentarze, tj:

' Get /Home/Index 

są tylko, że - komentarze.

1

Zajrzyj do URL Routing, powinieneś być w stanie zdefiniować alternatywne adresy URL dla działań kontrolera po prostu dobrze. :)

2

Będziesz musiał zmodyfikować kod, który konfiguruje trasy.

Jeśli jest to jednorazowa, możesz ustawić określoną trasę dla tego adresu URL.

Poniższy byłoby wyraźnie map url „Home/aboutBlah” do działania działania HomeController.About i użyć standardowego kontrolera/akcji url trasa wzór dla innych adresów URL:

RouteTable.Routes.MapRoute („CustomAboutUrl” "Home/aboutBlah", nowy {controller = "Strona główna", akcja = "Informacje"}});

RouteTable.Routes.MapRoute ("Default", "{controller}/{action}");

0

Najprostszą metodą byłoby stworzenie funkcji kontrolera o nazwie AboutBlah. No wiesz, tak:

Public Function AboutBlah() AS ActionResult 
    return View() 
End Function 

Następnie możesz mieć widok o nazwie AboutBlah.

Nie trzeba konfigurować trasy ani dekorować funkcji za pomocą atrybutu. Można nawet usunąć funkcję About lub skonfigurować ją w celu dostosowania widoku AboutBlah w następujący sposób:

return View("AboutBlah") 
Powiązane problemy