我正在编写一个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;});
答案 0 :(得分:1)
您可以实例化UrlHelper
课程。剃刀视图和控制器上的Url
都是UrlHelper
类的实例。此类具有Action
方法,您可以使用它根据路由生成网址。