我在HtmlHelperSumFor
创建了一个扩展方法。目的是从模型中获取一个属性并计算所有值的总和并返回它。这可行,但该值作为纯字符串返回。例如:
130.50
我经常在我的属性上使用自定义属性,例如
<Percentage>
Public Property Amount As Decimal
和
<Currency>
Public Property Amount As Decimal
在~/Views/Shared/DisplayTemplates中使用 DisplayTemplates Percentage.vbhtml和Currency.vbhtml。
这些渲染字符串如下:
80%
$130.50
(虽然有点复杂)
这是我的货币方法:
<Extension>
Public Function SumFor(Of TModel As IEnumerable(Of Object),
TProperty As ModelMetadata) _
(helper As HtmlHelper(Of TModel),
expression As Expression(Of Func(Of TModel, TProperty))) _
As IHtmlString
Dim data As ModelMetadata
Dim viewName As String = String.Empty
Dim sum As String
data = expression.Compile.Invoke(Nothing)
sum = data.GetSum(helper.ViewData.Model)
If data.DataTypeName IsNot Nothing Then viewName = data.DataTypeName
If data.TemplateHint IsNot Nothing Then viewName = data.TemplateHint
Return helper.Partial(viewName, sum)
End Function
如您所见,我正在尝试使用助手的Partial方法来确保使用正确的显示模板。但是我收到一条错误消息,提示找不到该视图。我想让我的总和值像正常一样使用DisplayFor
,以便选择显示模板,但我不知道如何将 HtmlHelper 与我的总和字符串一起使用。
我觉得我正在以错误的方式解决这个问题。这里最好的解决方案是什么?