【问题标题】:How to get a URL using routing tables from a Service Class?如何使用服务类中的路由表获取 URL?
【发布时间】:2015-06-30 03:23:57
【问题描述】:

我正在编写一个 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 助手 = new UrlHelper();

helper.Action("ActionName","Controller", new{area = "area"});

【问题讨论】:

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


    【解决方案1】:

    您可以实例化UrlHelper 类。 razor 视图中的Url 和控制器都是UrlHelper 类的实例。这个类有Action方法,你可以用它来生成基于路由的url。

    【讨论】:

    • 谢谢,我没有在 UrlHelper 上看到无参数 ctor。
    猜你喜欢
    • 2016-11-06
    • 2018-05-16
    • 2018-12-08
    • 2014-07-01
    • 1970-01-01
    • 2011-02-22
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多