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)
astatic
方法。通过这种方式,您可以访问它,而无需创建公共对象。您的代码如下所示:
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:(非常感谢