c# – automapper可以生成url吗?

前端之家收集整理的这篇文章主要介绍了c# – automapper可以生成url吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望automapper为视图模型生成URL.例如,这是我的数据对象:
public class User
{
  public int Id { get; set; }
  public int Name { get; set; }
}

视图模型看起来像这样:

public class UserListItem
{
  public string Name { get; set; }
  public string EditUrl { get; set; }
}

我希望使用为应用程序定义的路由生成EditUrl属性.

像这样的东西:

listIten.EditUrl = Url.Action("Edit","UserController",new { id = user.Id });

似乎无法让AutoMapper执行此操作.没有RequestContext,UrlHelper或任何可用于映射表达式的东西,我在调用Mapper.Map时没有找到任何传递上下文的方法.

我错过了什么吗?或者首先想要做到这一点是一个坏主意?

更新:其他背景

我正在研究为MVC视图生成URL的替代方法,目的是使ASP.NET MVC应用程序维护尽可能简单.映射视图模型时生成URL是其中一种选择.它很容易测试和清理视图.在某些情况下,它还会促进视图的可重用性.在尝试这个想法时,我遇到了一个砖墙,AutoMapper无法接受任何类型的(动态)上下文操作.

解决方法

我认为这不是AutoMapper的工作.

路由是特定于ASP.NET的,AutoMapper真的只适用于对象映射.它没有HTTP上下文的可见性(也不应该),因此无法完成.

如果你想在多个地方“重用”这个逻辑,为什么不创建一个强类型的HTML帮助器呢?

public static MvcHtmlString EditUserLinkForModel<UserListItem>(this HtmlHelper<UserListItem> htmlHelper)
{
   var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
   return urlHelper.Action("Edit",new { id = htmlHelper.ViewData.Model.UserId });
}

视图:

@Html.EditUserLinkForModel()

虽然这甚至可能是矫枉过正的.这是1班轮!

猜你在找的C#相关文章