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班轮! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |