C# 在Razor中使用.ToString()或其他方法是否形式糟糕?

C# 在Razor中使用.ToString()或其他方法是否形式糟糕?,c#,asp.net,.net,asp.net-mvc,razor,C#,Asp.net,.net,Asp.net Mvc,Razor,我在视图中使用.ToString()将输出为货币格式。在渲染视图之前,是否应将值转换为字符串?另外,为什么下面的第二个h3标记不像第一个标记那样创建货币字符串 例: 每个工资单的医疗成本:@Model.TotalCostPerPaycheck.ToString(“C”) @Model.FirstName@Model.LastName:@(Model.Salary-Model.TotalCostPerYear)的净薪酬。ToString(“C”) 输出: 每张工资单的医疗成本:71.16美元 艾

我在视图中使用.ToString()将输出为货币格式。在渲染视图之前,是否应将值转换为字符串?另外,为什么下面的第二个h3标记不像第一个标记那样创建货币字符串

例:

每个工资单的医疗成本:@Model.TotalCostPerPaycheck.ToString(“C”)
@Model.FirstName@Model.LastName:@(Model.Salary-Model.TotalCostPerYear)的净薪酬。ToString(“C”)
输出:

每张工资单的医疗成本:71.16美元


艾伯特·威尔逊的净薪酬:50150。托斯特林(“C”)

不,这不是一个糟糕的形式。如果你问我的话,这有点基于观点。我认为您应该做的是使您的视图代码对于将加入您的项目的其他人也是可读的

例如,我建议您创建一个名为
NetPay
或类似的新属性,在该属性中,您将在后端(或定义业务逻辑的位置)计算值,并在视图中使用它,而不是在视图中创建自己的计算

你只要打电话给酒店,每个人都会明白你认为那部分的意思。此外,每当需要更改逻辑时,只需在后端更改一次部件,而不是在多个视图中多次使用此逻辑。最美妙的是,如果你的值(因为我看不到你的模型,所以不确定这是否可能)为空,你可以创建一个回退逻辑


希望这是有意义的,祝你好运

不,这不是一个糟糕的形式。如果你问我的话,这有点基于观点。我认为您应该做的是使您的视图代码对于将加入您的项目的其他人也是可读的

例如,我建议您创建一个名为
NetPay
或类似的新属性,在该属性中,您将在后端(或定义业务逻辑的位置)计算值,并在视图中使用它,而不是在视图中创建自己的计算

你只要打电话给酒店,每个人都会明白你认为那部分的意思。此外,每当需要更改逻辑时,只需在后端更改一次部件,而不是在多个视图中多次使用此逻辑。最美妙的是,如果你的值(因为我看不到你的模型,所以不确定这是否可能)为空,你可以创建一个回退逻辑

希望这是有意义的,祝你好运

你可以试试-

<h3>
   Healthcare Cost Per Paycheck: @(Model.TotalCostPerPaycheck.ToString("C"))
</h3>

<h3>
    Net Pay for @Model.FirstName @Model.LastName: @((Model.Salary - Model.TotalCostPerYear).ToString("C")) 
</h3>

每张工资单的医疗保健成本:@(Model.TotalCostPerPaycheck.ToString(“C”))
@Model.FirstName@Model.LastName:@((Model.Salary-Model.TotalCostPerYear.ToString(“C”))的净薪酬
有关Razor语法的快速参考,请参阅文章。

您可以尝试-

<h3>
   Healthcare Cost Per Paycheck: @(Model.TotalCostPerPaycheck.ToString("C"))
</h3>

<h3>
    Net Pay for @Model.FirstName @Model.LastName: @((Model.Salary - Model.TotalCostPerYear).ToString("C")) 
</h3>

每张工资单的医疗保健成本:@(Model.TotalCostPerPaycheck.ToString(“C”))
@Model.FirstName@Model.LastName:@((Model.Salary-Model.TotalCostPerYear.ToString(“C”))的净薪酬

有关Razor语法的快速参考,请参阅文章。

尝试另一对括号
@((Model.Salary-Model.TotalCostPerYear)。ToString(“C”)
至于您问题的第一部分,它可能过于基于观点,不适合stackoverflow,但我看不出您这样做有任何错误。我不是一个真正的前端人员,但是像格式化要显示给用户的对象这样的事情肯定应该在UI层中处理。我想说,在视图中,像这里这样做非常简单的对象操作/格式化是可以的。这样,视图模型看起来更合理,并且在razor视图中使用
ToString()
可能会导致异常,如果原始字符串为空,因此,请始终使用
string.IsNullOrEmpty
方法检查
null
empty
,然后访问您的属性并使用
ToString()
。尝试另一对括号((Model.Salary-Model.TotalCostPerYear)。ToString(“C”)。至于问题的第一部分,对于stackoverflow来说,这可能过于基于观点,但我不认为你这样做有任何问题。我不是一个真正的前端人员,但是像格式化要显示给用户的对象这样的事情肯定应该在UI层中处理。我想说,在视图中,像这里这样做非常简单的对象操作/格式化是可以的。这样,视图模型看起来更合理,并且在razor视图中使用
ToString()
可能会导致异常,如果原始字符串为空,因此,请始终使用
string.IsNullOrEmpty
方法检查
null
empty
,然后访问您的属性并使用
ToString()
。额外的圆括号完成了此操作。谢谢大家。我也同意在我的模型中加入NetPay。额外的括号做到了这一点。谢谢大家。我也同意在我的模型中加入NetPay。