ASP.Net MVC - Создать ActionLink из кода позади? - PullRequest
2 голосов
/ 04 января 2010

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

По сути, я ищу функцию, аналогичную Html.ActionLink, к которой я могу получить доступ из файла класса (в идеале, если я смогу получить доступ к Помощнику, это было бы здорово). Поэтому я могу сделать что-то вроде этого

public static string GetAdminLinks()
{
    if(PermCheck)
    {
        return(Html.ActionLink(...));
    }
}

Любые предложения?

Ответы [ 2 ]

5 голосов
/ 05 апреля 2012

в контроллере:

Url.Action("Index", "Home", null, Request.Url.Scheme); 
3 голосов
/ 04 января 2010

Это в значительной степени зависит от того, как реализована ваша проверка прав доступа (и какой информации необходимо для определения прав пользователя). В любом случае, я бы реализовал его как расширение класса HtmlHelper.

Где-то в вашем App_Code:

using System.Web.Mvc.Html;

public static class HtmlHelperExtensions {
    public static string SecureActionLink(this HtmlHelper htmlHelper, string action, string controller){
        if(PermCheck)
            return htmlHelper.ActionLink(action, controller);
        else
            return string.Empty;
    }

    //add other ActionLink overrides if you like...
}

Тогда вы сможете вызывать метод расширения из любой точки ваших ViewPages без какого-либо кода позади.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...