2009-08-03 2 views
5

Le code par défaut VS génère pour HomeController est:Est-il possible d'utiliser une URL sans le nom de la fonction du contrôleur dans 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 

Disons que je veux créer une autre URL de la page à propos sans changer le nom de la méthode. J'ai essayé:

' 
' GET: /Home/Aboutblah 

Mais cela ne fonctionne pas. Quand je vais à http://localhost:1957/Aboutblah, je reçois un 404 du serveur ASP .NET.

Par conséquent, je me demandais si la goutte de texte "GET" faisait quoi que ce soit et s'il était possible de bidouiller les URL sans plonger dans le fichier ASAX.

Répondre

4

En outre, vous pouvez décorer la méthode avec un attribut:

[ActionName("Aboutblah")] 

James

EDIT Je viens de remarquer que vous utilisez VB. Vous devrez traduire en VB, peut-être:

<ActionName("Aboutblah")> 

?

Aussi, oui, les commentaires, à savoir:

' Get /Home/Index 

ne sont que - commentaires.

1

Regardez dans URL Routing, vous devriez être en mesure de définir des URL alternatives pour les actions du contrôleur très bien. :)

2

Vous devrez modifier le code qui configure les routes.

Si c'est juste un one-off, vous pouvez définir un itinéraire spécifique pour cette URL.

Seraient explicitement map url "Accueil/aboutBlah" à l'action de l'action HomeController.About et utiliser le modèle itinéraire contrôleur/action standard url pour toute autre urls:

RouteTable.Routes.MapRoute ("CustomAboutUrl", "Home/aboutBlah", new {controller = "Accueil", action = "À propos de"});

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

0

La méthode la plus simple serait de créer une fonction dans le contrôleur appelé AboutBlah. Vous savez, comme ceci:

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

Ensuite, vous pourriez avoir une vue nommée AboutBlah.

Pas besoin de configurer un itinéraire ou de décorer une fonction en utilisant un attribut. Vous pouvez même supprimer la fonction À propos ou la configurer pour amener l'affichage AboutBlah comme ceci:

return View("AboutBlah") 
Questions connexes