代码之家  ›  专栏  ›  技术社区  ›  LiamB

ASP.NET MVC-从代码背后生成actionLink?

  •  2
  • LiamB  · 技术社区  · 15 年前

    我有许多权限,并且根据一组条件,这些权限决定用户是否可以看到某些功能。我为此编写了一个助手函数,因为视图中的逻辑变得相当广泛。

    实际上,我正在寻找一个与html.actionlink相同的函数,我可以从类文件访问该函数(理想情况下,如果我可以访问帮助程序,那就太好了),这样我就可以这样做,

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

    有什么建议吗?

    2 回复  |  直到 13 年前
        1
  •  3
  •   g.breeze    13 年前

    这在很大程度上取决于如何实现权限检查(以及需要哪些信息来确定用户的权限)。不管怎样,我将它作为htmlhelper类的扩展实现。

    应用程序代码中的某个地方:

    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...
    }
    

    然后,您就可以从视图页中的任何位置调用扩展方法,而不需要任何代码隐藏。

        2
  •  5
  •   MaciejLisCK    13 年前

    在控制器中:

    Url.Action("Index", "Home", null, Request.Url.Scheme);