2014-06-18 60 views
0

我想創建一些靜態函數用於我的視圖,比較一些模型屬性和登錄用戶,然後返回一個布爾值。該視圖然後使用@if中的布爾值來有條件地顯示部分視圖。.net MVC 5視圖幫助函數返回布爾值

我想過編寫一個@Html輔助方法,但它看起來像那些只返回字符串。目前我在視圖中有硬編碼的檢查,但我想提取它們以便我可以對它們進行單元測試。 .net MVC 5的最佳做法是什麼?

回答

0

視圖擴展WebViewPage將是一個很好的解決方案,如果我需要輔助功能是在我所有的觀點可用,但由於我只在一個視圖中需要它們,所以我想出瞭如何獲得輔助函數的工作方式。

Helper類:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

using MyProject.Models; 

namespace MyProject.Helpers 
{ 
    public static class TransactionHelper 
    { 
     public static bool ShowAcceptDecline(TransactionStatus status, String transactionUserId, String currentUserId) 
     { 
      return status == TransactionStatus.PendingAcceptance && transactionUserId == currentUserId; 
     } 
    } 
} 

然後,我不知道是添加在視圖@using事情的關鍵:

@using MyProject.Helpers 
@model MyProject.Models.Transaction 

@if (TransactionHelper.ShowAcceptDecline(Model.Status, Model.UserId, User.Identity.GetUserId())) 
{ 
    @Html.Partial("_Pending", Model) 
} 
0

可以爲System.Web.Mvc.WebViewPage創建擴展,並調用它像@this.CompareModelIdAndUserID();