Хорошо, быстрое и грязное решение:
подготовить функцию для построения серверной части Urls
что-то вроде этого, вероятно, будет лучшим выбором:
public static string GetUrl(string Action, string Controller, object RouteValues) {
UrlHelper Url = new UrlHelper(HttpContext.Current.Request.RequestContext);
return Url.Action(Action, Controller, RouteValues);
}
В помощнике получите информацию об аутентификации пользователя и верните встроенный URL или строку. Пусто.
public static string SecureLink(this HtmlHelper helper, string Action, string Controller, object RouteValues)
{
YourUserObject LoggedUser = /* Whatever you need to obtain your UserId */
if (LoggedUser.IsSuperUser) {
return GetUrl(Action, Controller, RouteValues);
}
return string.empty;
}
Если ваш результат закодирован в HTML, просто используйте MvcHtmlString вместо строки в качестве возвращаемого значения.
В противном случае остерегайтесь, вам может понадобиться использовать @Html.Raw
для его излучения.
PS: очевидно, что я не добавил полную генерацию <a href .../>
в этом примере кода, вы сами решаете, какие параметры нужны (добавьте их в сигнатуру Helper), я обычно копирую сигнатуры других @Html
помощников (поэтому имя, значение и список атрибутов Html).