ASP.Net MVC - 如何在后台代码中生成一个ActionLink?

3

我有许多权限,根据一组条件,这些权限决定用户是否可以看到某些功能。因为视图中的逻辑变得非常复杂,所以我编写了一个帮助函数。

基本上,我正在寻找与 Html.ActionLink 相同的函数,可以从类文件中访问(如果我可以访问 Helper 就更好了),这样我就可以像这样做:

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

有什么建议吗?

2个回答

6
在控制器中:
Url.Action("Index", "Home", null, Request.Url.Scheme); 

3

这在很大程度上取决于您的权限检查是如何实现的(以及它需要确定用户权限的哪些信息)。无论如何,我会将其实现为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中调用扩展方法,而无需任何代码后台。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接