2

我的项目中的视图模型存在一些问题,其中包含许多双打

IE。

public class MyViewModel
{
    public double Left { get; set; }
    public double Right { get; set; }
    public double Top { get; set; }
    public double Bottom { get; set; }
}

在我看来我有

@Html.EditorForModel

如果我的项目中没有其他自定义模板,则会正确呈现,并且我会得到一个带有双精度的文本框。

一旦我将字符串模板放入 View/Shared/EditorTemplate 并在其中放入任何内容,该模板中的任何内容都会被渲染,而不是双模板。

我会认为即使我已经覆盖了字符串模板,选择模板的顺序将保持不变,并且将选择双模板,因为它最初是在字符串模板存在之前。

字符串模板仅包含(没有 @model )

<h2>String</h2>

我在这里遗漏了什么,为什么在这里选择字符串模板?

我已经确定我可以在视图共享文件夹中放置一个双重模板,它会呈现它,但似乎我不应该这样做。

编辑:

根据达林的回答,我基于十进制模板创建了自己的双编辑器模板。

@using System.Globalization
@functions {

    private object FormattedValue
    {
        get
        {
            if (ViewData.TemplateInfo.FormattedModelValue == ViewData.ModelMetadata.Model)
            {
                return String.Format(CultureInfo.CurrentCulture, "{0:0.00}", ViewData.ModelMetadata.Model);
            }
            return ViewData.TemplateInfo.FormattedModelValue;
        }
    }

}

@Html.TextBox("", FormattedValue, new {@class = "text-box single-line"})
4

1 回答 1

1

我在这里遗漏了什么,为什么在这里选择字符串模板?

在这两种情况下,都选择了 String 模板。double 类型没有默认模板。以下是默认字符串模板的外观:

@Html.TextBox(
    "", 
    ViewData.TemplateInfo.FormattedModelValue,
    new { @class = "text-box single-line" }
)

我已经确定我可以在视图共享文件夹中放置一个双重模板,它会呈现它,但似乎我不应该这样做。

好吧,如果您对 double 类型的默认模板(即 )不满意,string.cshtml您可以随时为其编写自定义模板。

于 2013-07-31T06:10:48.683 回答