如何使用显示模板而不是部分视图?

时间:2013-11-19 23:29:59

标签: asp.net-mvc asp.net-mvc-4 partial-views html-helper display-templates

我在HtmlHelper上创建了SumFor扩展方法。目的是从模型中获取属性并计算所有值的总和并将其返回。这有效,但该值以纯字符串形式返回。例如:

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与 sum 字符串一起使用。

我觉得我的方式错了。什么是最好的解决方案?

0 个答案:

没有答案