C# ASP.NET MVC的常用函数和帮助程序

C# ASP.NET MVC的常用函数和帮助程序,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我不明白,如果有人能澄清: 我需要从这里和那里访问此功能/帮助程序: namespace Laf.Helpers { public class Common { public string TimeSpanToString(TimeSpan val) { return val.ToString(@"hh\:mm"); } } } 在我的控制器中,我通过以下方式访问它: var tmp = new C

我不明白,如果有人能澄清:

我需要从这里和那里访问此功能/帮助程序:

namespace Laf.Helpers
{
    public class Common
    {
        public string TimeSpanToString(TimeSpan val)
        {
            return val.ToString(@"hh\:mm");
        }
    }
}
在我的控制器中,我通过以下方式访问它:

var tmp = new Common();
string str = tmp.TimeSpanToString(tp.DepartureTime);
transferPoint.Add(
    new ListTransferPointVM { PortName = tp.PortName, DepartureTime = str }
str);
问题是我如何在每个控制器中实现并避免重复:

DepartureTime = TimeSpanToString(tp.DepartureTime)
transferPoint.Add(
    new ListTransferPointVM { 
        PortName = tp.PortName, 
        DepartureTime = Common.TimeSpanToString(tp.DepartureTime) }
    Common.TimeSpanToString(tp.DepartureTime));
可能的答案 我刚刚找到了一种编译器不反对的方法:

public class TransferController : Controller
{
    private Common common = new Common();

    public ActionResult Index ()
    {
      ...
然后,当我需要它时:

string time = common.TimeSpanToString((TimeSpan)variable);

您可以将您的方法
stringtimespanostring(TimeSpan)
a
static
方法。通过这种方式,您可以访问它,而无需创建
公共对象。您的代码如下所示:

namespace Laf.Helpers
{
    public class Common
    {
        public static string TimeSpanToString(TimeSpan val)
        {
            return val.ToString(@"hh\:mm");
        }
    }
}
和您的控制器:

DepartureTime = TimeSpanToString(tp.DepartureTime)
transferPoint.Add(
    new ListTransferPointVM { 
        PortName = tp.PortName, 
        DepartureTime = Common.TimeSpanToString(tp.DepartureTime) }
    Common.TimeSpanToString(tp.DepartureTime));
编辑:正如Michael Petrotta所建议的,扩展方法会更好。一项实施可以是:

namespace LaF.ExtensionMethods
{
    public static class MyExtensions
    {
        public static string TimeSpanToString(this TimeSpan ts)
        {
            return ts.ToString(@"hh\:mm");
        }
    }
}
您现在可以调用如下方法:

tp.DepartureTime.TimeSpanToString();

您可以将您的方法
字符串TimeSpanToString(TimeSpan)
设置为
静态方法。通过这种方式,您可以访问它,而无需创建
公共对象。您的代码如下所示:

namespace Laf.Helpers
{
    public class Common
    {
        public static string TimeSpanToString(TimeSpan val)
        {
            return val.ToString(@"hh\:mm");
        }
    }
}
和您的控制器:

DepartureTime = TimeSpanToString(tp.DepartureTime)
transferPoint.Add(
    new ListTransferPointVM { 
        PortName = tp.PortName, 
        DepartureTime = Common.TimeSpanToString(tp.DepartureTime) }
    Common.TimeSpanToString(tp.DepartureTime));
编辑:正如Michael Petrotta所建议的,扩展方法会更好。一项实施可以是:

namespace LaF.ExtensionMethods
{
    public static class MyExtensions
    {
        public static string TimeSpanToString(this TimeSpan ts)
        {
            return ts.ToString(@"hh\:mm");
        }
    }
}
您现在可以调用如下方法:

tp.DepartureTime.TimeSpanToString();

一个扩展方法会更好。到TimeSpan类?我同意。我还没有想到这个解决方案,谢谢!我同意MichaelPetrotta的观点。我没有想到这一点。对于@Simon:我花了几个月的时间来实现这一点,但没有运气。我已经开始做更复杂的应用程序,我需要这个,而且。。。从森林里看不到树:(感谢bunchAn扩展方法会更好。对于TimeSpan类?我同意。我还没有考虑过这个解决方案,谢谢!我同意MichaelPetrotta的观点。我没有想到这一点。对于@Simon:我花了几个月的时间才实现了这一点,但没有运气。我已经开始做更复杂的应用程序,我需要这个,而且……没有看到tre。)来自森林的e:(非常感谢