2011-12-17 29 views
5

phép nói rằng i`m trong một phương thức hành động và tôi muốn tạo ra một chuỗi như thế này:Tạo Url trong MVC từ Mã Đằng sau

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

tôi muốn tiết kiệm này để DB vì vậy tôi đã tự hỏi nếu có bất kỳ cách chính thức nào để tạo ra nó thay vì tự xây dựng nó.

Tôi đang sử dụng MVC3

cảm ơn trước.

Trả lời

12

Bạn có thể sử dụng Url tài sản của bộ điều khiển:

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

và nếu bạn cần một địa chỉ tuyệt đối chỉ cần sử dụng quá tải thích hợp:

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

điều buồn cười là Url duy nhất tôi có là dưới System.Security.Policy; và nó không có Phương thức hành động – Stacker

+3

@Stacker, ví dụ mã tôi đã hiển thị bên trong một hành động điều khiển. Các hành động điều khiển thuộc về một bộ điều khiển. Bộ điều khiển lấy được từ lớp Controller. Lớp Controller có thuộc tính Url. Đây là những gì bạn nên sử dụng. Bạn không nên cố gắng tạo ra các url chỉ ở bất cứ đâu trong ứng dụng của bạn, đó là những gì tôi cho là bạn đang làm, ví dụ như trong Model chẳng hạn. Nếu một phần mã của bạn cần url, bạn nên tạo url này trong bộ điều khiển và chuyển nó làm tham số cho phần mã này cần. –

+1

@DarinDimitrov, tôi biết điều này là không có chủ đề cho câu trả lời này, nhưng làm thế nào bạn sẽ kiểm tra đơn vị Foo()? Bạn sẽ không cần phải giả lập HttpContext/HttpRequest? – danludwig

Các vấn đề liên quan