BuildUrlFromExpression Добавление области в URL - PullRequest
0 голосов
/ 23 марта 2011

У меня есть сайт с административной областью, и я создал помощник HTML, чтобы помочь мне создавать изображения разных размеров в моих представлениях, со следующим.

Html.Image<ImageController>(c => c.DisplayImage(img.Filename, 53, 35), "Product Thumbnail")

Это мой помощник,

public static string Image<T>(this HtmlHelper helper, Expression<Action<T>> action,string alt) where T : Controller
    {
        string url = LinkExtensions.BuildUrlFromExpression(helper, action);
        return string.Format("<img src=\"{0}\" alt=\"{1}\" />", url, alt);
    }

Проблема, с которой я сталкиваюсь, заключается в том, что строка string url = LinkExtensions.BuildUrlFromExpression(helper, action); добавляет административную область к URL-адресу.

Например http://localhost:57771/Admin/Image/DisplayImage?....
Вместо http://localhost:57771/Image/DisplayImage?....

Я полагаю, что это связано с этой сообщенной проблемой, но представленный обходной путь для меня не компилируется. Не уверен, куда идти отсюда, любая помощь будет отличной.

1 Ответ

1 голос
/ 08 июня 2011

У меня есть лучший ответ!

    public static string Image<T>(this HtmlHelper helper, Expression<Action<T>> action, int width, int height, string alt)
            where T : Controller
    {
        var expression = action.Body as MethodCallExpression;
        string actionMethodName = string.Empty;
        if (expression != null)
        {
            actionMethodName = expression.Method.Name;
        }
        string url = new UrlHelper(helper.ViewContext.RequestContext, helper.RouteCollection).Action(actionMethodName, typeof(T).Name.Remove(typeof(T).Name.IndexOf("Controller"))).ToString();         
        //string url = LinkBuilder.BuildUrlFromExpression<T>(helper.ViewContext.RequestContext, helper.RouteCollection, action);
        return string.Format("<img src=\"{0}\" width=\"{1}\" height=\"{2}\" alt=\"{3}\" />", url, width, height, alt);
    }
}
...