我有 2 个显示模板,它们在几行上具有相同的代码。
有没有办法将通用代码移动到另一个文件并在两个模板中引用该文件?
例如:
显示模板 #1 和 # 2 具有以下通用代码:
IFormatProvider formatProvider = System.Globalization.CultureInfo.CurrentCulture;
string formattedCurrency = null;
if (formatProvider.ToString().Equals("en-US"))
{
formattedCurrency = (@Model < 0 ? @Model.ToString("C", formatProvider) : (@Model).ToString("C", formatProvider));
}
else
{
formattedCurrency = (@Model < 0 ? "- " + @Math.Abs(@Model).ToString("C", formatProvider) : (@Model).ToString("C", formatProvider));
}
如何将其移动到单独的文件并从两个模板中引用该文件?
所以我的第一个选择是将formattedCurrency
道具作为通用函数:
public class LocalizedViewModel {
private IFormatProvider formatProvider;
public float Currency { get; set; }
public string FormattedCurrency () {
if (formatProvider.ToString().Equals("en-US"))
{
return (this.Currency < 0 ? this.Currency.ToString("C", formatProvider) : (this.Currency).ToString("C", formatProvider));
}
else
{
return (this.Currency < 0 ? "- " + Math.Abs(this.Currency).ToString("C", formatProvider) : (this.Currency).ToString("C", formatProvider));
}
}
public LocalizedViewModel () {
formatProvider = System.Globalization.CultureInfo.CurrentCulture;
}
}
然后从此基本模型继承两个视图模型
public class MyModel1: LocalizedViewModel {
public MyModel1() : base() {
}
}
public class MyModel2: LocalizedViewModel {
public MyModel2() : base() {
}
}
然后每次创建对象时,您都可以访问此 prop:
var myModel = new Model1();
var myModel2 = new Model2();
myModel.Currency = 100;
myModel2.Currency = 200;
现在,两个视图模型都将具有可在任何视图上显示的 formattedCurrency,而无需任何额外的视图逻辑。希望这对您有所帮助,并且对您来说可能是一个可行的选择。
myModel.FormattedCurrency();
myModel2.FormattedCurrency();
并在任何模板上呈现该属性。同样,这是实现相同结果的替代解决方案。但采用不同的方法。
问候