ASP.NET MVC的常用功能和帮助程序

时间:2014-07-05 19:43:05

标签: 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 Common();
string str = tmp.TimeSpanToString(tp.DepartureTime);
transferPoint.Add(
    new ListTransferPointVM { PortName = tp.PortName, DepartureTime = str }
str);

问题是如何在每个控制器中实现并且没有重复:

DepartureTime = TimeSpanToString(tp.DepartureTime)

可能的答案 我刚刚发现编译器没有皱眉的方式:

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

    public ActionResult Index ()
    {
      ...

以后,当我需要它时:

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

1 个答案:

答案 0 :(得分:4)

您可以将方法string TimeSpanToString(TimeSpan)设为static方法。这样您就可以访问它而无需创建Common对象。您的代码如下所示:

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

你的控制器:

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();

More on Extension Methods in C#