2011-12-17 12 views
5

Powiedzmy I`m w sposobie działania i chcę, aby wygenerować ciąg tak:Generowanie URL w MVC z Kodeksem Za

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

chcę zapisać to DB więc zastanawiałem się, czy istnieje każdy formalny sposób na wygenerowanie go, zamiast samemu go budować.

I`m użyciu MVC3

z góry dzięki.

Odpowiedz

12

Można użyć właściwości Url kontrolera:

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

i jeśli potrzebujesz bezwzględny adres URL wystarczy użyć odpowiedniego przeciążeniem:

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

Najśmieszniejsze jest jedynym Url mam to pod System.Security.Policy; i nie ma metody działania – Stacker

+3

@Stacker, przykład kodu, który pokazałem, znajduje się wewnątrz akcji kontrolera. Działania kontrolera należą do kontrolera. Kontrolery pochodzą z klasy Controller. Klasa Controller ma właściwość Url. Tego właśnie powinieneś użyć. Nie powinieneś próbować generować adresów URL w dowolnym miejscu aplikacji, co, jak sądzę, robisz, na przykład w modelu. Jeśli jakaś część twojego kodu wymaga adresu URL, powinieneś wygenerować ten adres URL w kontrolerze i przekazać go jako parametr tej części kodu, która tego potrzebuje. –

+1

@DarinDimitrov, Wiem, że jest to temat nie na temat tej odpowiedzi, ale w jaki sposób testowałbyś jednostkę Foo()? Czy nie musiałbyś kpić z HttpContext/HttpRequest? – danludwig

Powiązane problemy