.net mvc 5视图辅助函数返回布尔值

时间:2014-06-18 17:14:14

标签: .net asp.net-mvc asp.net-mvc-5

我正在尝试在我的视图中创建一些静态函数,用于比较多个模型属性和登录用户,然后返回一个布尔值。然后视图在@if中使用布尔值来有条件地显示部分视图。

我考虑过编写一个@Html辅助方法,但它看起来只是返回字符串。目前我在视图中对硬编码进行了检查,但是我想提取它们以便我可以对它们进行单元测试。使用.net MVC 5进行此操作的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

您可以为 System.Web.Mvc.WebViewPage 创建扩展程序,并在@this.CompareModelIdAndUserID();

之类的视图中调用它

答案 1 :(得分:0)

如果我需要帮助函数在我的所有视图中都可用,扩展WebViewPage将是一个很好的解决方案,但由于我只需要在一个视图中使用它们,我想出了如何使辅助函数正常工作。

助手类:

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