如何使用服务类中的路由表获取URL?

时间:2015-06-30 03:23:57

标签: asp.net-mvc asp.net-mvc-routing

我正在编写一个asp.net MVC 5应用程序,并且有一个从控制器调用的服务类。在服务中我根据一些查询数据加载DTO,并希望使用与我在Razor代码中的方式类似的路由来构建URL。 @ Url.Action(" RequestData"," Home",new {area =" MyArea"})

如何让MVC使用类中的路由表来构建我的URL而无需访问基本控制器类?

示例:

public class MyDataService : IMyDataService
{
   private readonly MyDataContext _context;

public MyDataService()
: this(new MyDataContext())
{
}

public MyDataService(MyDataContext ctx)
{
   if (ctx != null)
      _context = ctx;
}

public List<MyDTO> LoadDTOInfo(int id)
{
   var people = _context.People.ToList();
   var list = new List<MyDTO)();    

   foreach(var person in people)
   {
      var dto = new MyDto{
      MyUrlLink = ...??? // controller/action/+person.Id;
   };       

   list.add(dto);
   }        
   return list;  
}

}

使用@alisabzevari答案:

UrlHelper helper = new UrlHelper();

helper.Action(&#34; ActionName&#34;,&#34; Controller&#34;,new {area =&#34; area&#34;});

1 个答案:

答案 0 :(得分:1)

您可以实例化UrlHelper课程。剃刀视图和控制器上的Url都是UrlHelper类的实例。此类具有Action方法,您可以使用它根据路由生成网址。