2011-12-17 20 views
5

Digamos que yo estoy en un método de acción y quiero generar una cadena como esta:Generar URL en MVC de código subyacente

http://www.myhost.com/Home/Index?Id=1 

Quiero salvar este a DB así que me preguntaba si hay cualquier forma formal de generarlo en lugar de construirlo yo mismo.

yo estoy usando MVC3

gracias de antemano.

Respuesta

12

Usted puede utilizar la propiedad Url del controlador:

public ActionResult Foo() 
{ 
    string url = Url.Action("Index", "Home", new { id = 1 }); 
    // TODO: save to DB 
} 

y si necesita una URL absoluta sólo tiene que utilizar la sobrecarga adecuada:

string url = Url.Action("Index", "Home", new { id = 1 }, "http"); 
+1

Lo curioso es la única dirección URL que se encuentra bajo System.Security.Policy; y no tiene el Método de acción – Stacker

+3

@Stacker, el ejemplo del código que he mostrado está dentro de una acción del controlador. Las acciones del controlador pertenecen a un controlador. Los controladores se derivan de la clase Controlador. La clase Controller tiene una propiedad Url. Esto es lo que deberías usar. No debe tratar de generar URL en cualquier lugar de su aplicación, que es lo que supongo que está haciendo, como en el Modelo, por ejemplo. Si alguna parte de tu código necesita una url, deberías generar esta url en el controlador y pasarla como parámetro a esta parte del código que lo necesita. –

+1

@DarinDimitrov, sé que esto está fuera de tema para esta respuesta, pero ¿cómo probarías la unidad Foo()? ¿No necesitarías burlarte de HttpContext/HttpRequest? – danludwig

Cuestiones relacionadas