0

我在HtmlHelperSumFor创建了一个扩展方法。目的是从模型中获取一个属性并计算所有值的总和并返回它。这可行,但该值作为纯字符串返回。例如:

130.50

我经常在我的属性上使用自定义属性,例如

<Percentage>
Public Property Amount As Decimal

<Currency>
Public Property Amount As Decimal

~/Views/Shared/DisplayTemplates中使用 DisplayTemplates Percentage.vbhtmlCurrency.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 与我的总和字符串一起使用。

我觉得我正在以错误的方式解决这个问题。这里最好的解决方案是什么?

4

0 回答 0