C#ASP.NET如何在Helpers中使用Class的方法?

时间:2017-07-10 05:06:24

标签: c# asp.net asp.net-mvc

所以...这是一个非常愚蠢的问题,但我正在搜索,并没有找到一个绝望的答案......

我在Helpers文件夹上创建了这个类,在控制器上使用它来制作一些干净的代码......

Restrict where this project can be run

但是我试图在我的控制器上调用CalcularPagamento方法(并将3个参数传递给它),但我不能。我只能打电话给班级。我试图实例化Class来调用方法,但也没有用。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您的代码应该像这样更改,以便您可以从其他类

访问帮助器方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace CarroBemGuardado.Helpers
{
    public class CalcularValorPagar
    {
       public static decimal CalcularPagamento (string dur, decimal ph, decimal hadd)
        {
            decimal valorpagar = 0;
            decimal horas = Convert.ToDecimal(dur.Substring(0, 2));
            decimal minutos = Convert.ToDecimal(dur.Substring(3, 2));

            if ((horas == 0) && (minutos <= 30))
            {
                valorpagar = ph / 2;
            }
            else if ((horas > 0) && (minutos > 10))
            {
                valorpagar = ph + (hadd * horas);
            }
            else if ((horas > 0) && (minutos < 10))
            {
                valorpagar = ph + (hadd * (horas - 1));
            }
            else
            {
                valorpagar = ph;
            }

            return valorpagar;
        }
    }
}

答案 1 :(得分:1)

您需要为public方法提供static Access-Modifier

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

namespace CarroBemGuardado.Helpers
{
    public class CalcularValorPagar
    {
        public static decimal CalcularPagamento (string dur, decimal ph, decimal hadd)
        {
            decimal valorpagar = 0;
            decimal horas = Convert.ToDecimal(dur.Substring(0, 2));
            decimal minutos = Convert.ToDecimal(dur.Substring(3, 2));

            if ((horas == 0) && (minutos <= 30))
            {
                valorpagar = ph / 2;
            }
            else if ((horas > 0) && (minutos > 10))
            {
                valorpagar = ph + (hadd * horas);
            }
            else if ((horas > 0) && (minutos < 10))
            {
                valorpagar = ph + (hadd * (horas - 1));
            }
            else
            {
                valorpagar = ph;
            }

            return valorpagar;
        }
    }
}

在您的Controller中,您可以按照以下方式访问它:

public ActionResult Index(){
    string sDur = "someValue";
    decimal dPH = 2;
    decimal dHadd = 3;
    decimal valorpagar = CalcularValorPagar.CalcularPagamento(sDur, dPH, dHadd );

   return View();
}

您无需实例化帮助程序类CalcularValorPagar即可访问static methods类中的任何CalcularValorPagar

这是{{1>}的真正美(我最喜欢),你可以在不创建static methods instance class的情况下调用它们static methods strings.xml 1}}驻留。

静态方法的相关SO主题(This&amp; This)。