2010-01-04 70 views
2

我有許多權限,並且根據一組條件,這些權限決定用戶是否可以看到某些功能。我已經寫了一個輔助函數,因爲視圖中的邏輯變得相當廣泛。ASP.Net MVC - 從後面的代碼生成一個ActionLink?

基本上我正在尋找一個功能相同的Html.ActionLink,我可以從一個類文件訪問(理想情況下,如果我能訪問,將是巨大的助手),所以我可以做財產以後像這樣,

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

任何消耗?

+1

詞 '代碼隱藏' 不ASP.NET MVC應用。 – 2010-01-04 18:31:50

+3

@George:實際上,您仍然可以在視圖頁面的文件和webforms控件背後使用.cs代碼。這只是不常見的(而不是很有用)。 :) – LorenzCK 2010-01-04 21:32:31

回答

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任何地方沒有任何代碼隱藏調用擴展方法。

5

在控制器:

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