2009-08-03 13 views
5

El código predeterminado que genera VS para HomeController es:¿Es posible usar una URL sin el nombre de la función del controlador en 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 

Digamos que quiero crear una URL diferente para el relacionado con la página sin tener que cambiar el nombre del método. Lo he intentado:

' 
' GET: /Home/Aboutblah 

Pero eso no funciona. Cuando voy al http://localhost:1957/Aboutblah, obtengo un 404 del servidor ASP .NET.

En consecuencia, me preguntaba si la burbuja de texto "OBTENER" realmente hace algo y si es posible jugar con las URL sin meterse en el archivo ASAX.

Respuesta

4

Además, se puede decorar el método con un atributo:

[ActionName("Aboutblah")] 

James

EDITAR Acabo de notar que estés usando VB. Tendrá que traducir a VB, tal vez:

<ActionName("Aboutblah")> 

?

También, sí, los comentarios, es decir:

' Get /Home/Index 

son sólo eso - los comentarios.

1

Mire en URL Routing, usted debería ser capaz de definir URL alternativas para las acciones del controlador. :)

2

Deberá modificar el código que configura las rutas.

Si solo se trata de una sola vez, puede configurar una ruta específica para esta url.

El siguiente sería asignar explícitamente url "Inicio/aboutBlah" a la acción HomeController.About acción y utilizar el controlador/acción patrón de ruta URL estándar para ninguna otra URL:

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

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

0

El método más fácil sería crear una función en el controlador llamada AboutBlah. Ya sabes, así:

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

Entonces podrías tener una Vista llamada AboutBlah.

No es necesario configurar una ruta o decorar una función mediante el uso de un atributo. Incluso podría eliminar la función About o configurarla para que aparezca la vista AboutBlah de la siguiente manera:

return View("AboutBlah") 
Cuestiones relacionadas