Asp MVC Действие ссылка абсолютный URL

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

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

В идеале я хотел бы внести изменения в одно место и сделать все мои ссылки рендерингом по мере необходимости. Конечно, должно быть что-то, что я могу установить, или функцию, которую я могу переопределить, чтобы выполнить это.

Ответ 1

Я написал сообщение в блоге Как создать URL абсолютного действия с использованием класса UrlHelper, в котором я представляю собственный метод расширения с именем AbsoluteAction, Я рекомендую вам проверить это!

/// <summary>
/// Generates a fully qualified URL to an action method by using
/// the specified action name, controller name and route values.
/// </summary>
/// <param name="url">The URL helper.</param>
/// <param name="actionName">The name of the action method.</param>
/// <param name="controllerName">The name of the controller.</param>
/// <param name="routeValues">The route values.</param>
/// <returns>The absolute URL.</returns>
public static string AbsoluteAction(this UrlHelper url,
    string actionName, string controllerName, object routeValues = null)
{
    string scheme = url.RequestContext.HttpContext.Request.Url.Scheme;

    return url.Action(actionName, controllerName, routeValues, scheme);
}

ASP.NET MVC включает встроенные функции для генерации абсолютных URL-адресов, хотя и не очень интуитивно понятным способом.

Существует несколько перегрузок метода UrlHelper.Action(), которые позволяют передавать дополнительные параметры, такие как значения маршрута, используемый протокол и имя узла для URL-адреса. Если вы используете перегрузку, которая позволяет указать параметр protocol, сгенерированный URL-адрес будет абсолютным. Таким образом, следующий код может использоваться для создания абсолютного URL-адреса для метода About action для HomeController:

@Url.Action("About", "Home", null, "http")

Ответ 2

Вы можете создать новый метод расширения под названием Html.AbsoluteAction. AbsoluteAction может добавить дополнительные параметры, необходимые для абсолютного URL-адреса, поэтому вам нужно будет только один раз написать этот код в своем пользовательском методе расширения.