UrlHelper.Action无法在链接

时间:2015-06-03 20:17:54

标签: c# asp.net-mvc asp.net-mvc-4

我试图使用类似于this ASP MVC帖子的自定义Image助手。下面是我使用的代码,它接受控制器和操作的字符串输入参数。然后,帮助程序使用UrlHelper.Action()方法来处理这些字符串,并据称生成相对URL。

但是,正如您在下面的屏幕截图中看到的那样,呈现的URL中唯一的项目是路径数据。没有控制器或动作。 string url的值等于简单 /?AgentId=1917513249FindAgent作为controllerNameactionName字符串的值存在。

    public static MvcHtmlString ImageLink(this HtmlHelper htmlHelper, string imgSrc, string alt, string actionName,
                                          string controllerName, object routeValues, object imgAttributes, object htmlAttributes)
    {
        UrlHelper urlHelper = ((Controller) htmlHelper.ViewContext.Controller).Url;
        var imgTag = new TagBuilder("img");
        imgTag.MergeAttribute("src", imgSrc);
        imgTag.MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(imgAttributes), true);

        string url = urlHelper.Action(actionName, controllerName, routeValues);
        var imgLink = new TagBuilder("a");
        imgLink.MergeAttribute("href", url);
        imgLink.InnerHtml = imgTag.ToString();
        imgLink.MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes), true);

        return MvcHtmlString.Create(imgLink.ToString());
    }

修改

以下是我用来调用助手的Razor

@foreach (var a in item.AgentIds)
{
    @Html.ImageLink(Url.Content("~/Content/images/ConCode.PNG"), null, "Find", "Agent", new {AgentId=a.AgentId}, new { title = "Get Con Code" }, null)
    <br/>                     
}

enter image description here

0 个答案:

没有答案