我正在尝试从类库项目创建一个超链接,但我的结果是空的。
代码:
var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
var url = urlHelper.Action("View", "Collection", new { area = "Administration", id = Request.Id });
有没有办法从类库项目创建超链接?如果是这样,怎么样?
修改:
urlHelper
是来自UrlHelper
System.Web.Mvc
类的对象
urlHelper返回空字符串。
答案 0 :(得分:1)
我处理这类问题的方法之一是使用依赖注入并在库中向您的类传递一个服务接口(例如:IHyperlinkFormatter),它将提供生成URL的方法。然后,可以通过MVC项目中知道可用路由的类来实现此接口。通过这样做,您还可以更好地控制单元测试,并通过遵守单一责任SOLID原则来提高代码质量。
我希望这对你有所帮助。
答案 1 :(得分:0)
如果您的代码在控制器内,则不需要创建UrlHelper
类的实例。 Controller类具有UlrHelper
(See this)类型的Url属性。
在您的控制器中,您将拥有:
var url = Url.Action("View", "Collection", new { area = "Administration", id = Request.Id });
答案 2 :(得分:0)
UrlHelper
对您的网络应用中存在的路线一无所知。您可以将UrlHelper
控制器作为参数传递。
您也可以使用
new UrlHelper(requestContext, routeCollection)
这样控制器初始化Url
类型
UrlHelper