2014-07-05 31 views
-1

我没有得到的东西,如果有人可以澄清:常用功能和帮手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); 

回答

3

你可以让你的方法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)); 

编辑:正如迈克尔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#

+2

扩展方法会更好。 –

+0

到TimeSpan类?我同意。我还没有想过这个解决方案,谢谢! – Simon

+0

我同意MichaelPetrotta。这并没有想到。对于@西蒙:我正在寻找几个月来实现这一目标,但没有运气。我已经开始做更复杂的应用程序,我需要这个,并且...没有看到从树林中的树:(感谢一堆 – HerGiz