21

tôi đang sử dụng để tạo ra các URL đường đến hành động điều khiển khác trong một hành động điều khiển MVC sử dụng một cái gì đó tương tự như dưới đây:Tạo Route Url để MVC controller action từ WebAPI

public class ApplicationController : Controller 
{ 
    public ActionResult Index() 
    { 
     var url = Url.RouteUrl("routename", 
      new { controller = "Application", Action = "Index2" , other="other" }); 
    } 

    public ActionResult Index2(string other) 
    { 
    } 
} 

Nhưng tôi cũng cần phải có khả năng cũng tạo ra các URL tới các hành động điều khiển MVC từ bên trong webapi, Làm thế nào để tôi thực hiện việc này?

Dường như có thuộc tính UrlHelper trên APIController nhưng tôi không thể tìm thấy bất kỳ ví dụ nào về cách sử dụng và không thể tự mình tìm ra.

CẬP NHẬT: Lý do tôi cố gắng tạo url là phương pháp webapi cụ thể này gửi email cung cấp cho người nhận liên kết để hướng người dùng quay lại phần thích hợp của trang web. Tôi rõ ràng muốn thoát khỏi mã hóa cứng vì nó sẽ không hoạt động cho các triển khai khác nhau và cũng nếu tôi bắt đầu thay đổi định tuyến, liên kết này sẽ bị hỏng. Có cách tiếp cận tốt hơn để làm điều này?

Trả lời

27

Bạn có thể sử dụng tên tuyến đường MVC cũng như với API web UrlHelper. Ví dụ,

Url.Link("Default", new { Controller = "Account", Action = "Login" }); 

hoặc

Url.Route("Default", new { Controller = "Account", Action = "Login" }); 
+0

Bạn là chính xác. Cảm ơn – Kramer00

+0

@TrueBlueAussie bạn đang xem UrlHelper sai. Nhìn vào cái http không phải cái mvc. – Steve

+1

http://msdn.microsoft.com/en-us/library/system.web.http.routing.urlhelper_methods(v=vs.118).aspx. Nếu bạn đang sử dụng định tuyến thuộc tính, hãy đặt tên cho tuyến đường của bạn. – Steve

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