editorfor选择字符串模板而不是double

时间:2013-07-31 05:49:35

标签: asp.net-mvc-4 mvc-editor-templates

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

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

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

只要我在View / Shared / EditorTemplate中放置一个字符串模板并将任何内容放入其中,该模板中的任何内容都会被呈现而不是双模板。

我原本以为即使我重写了字符串模板,选择模板的顺序也会保持不变,并且双模板会在字符串模板存在之前被选中。

字符串模板仅由(no @model)

组成
<h2>String</h2>

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

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

修改

根据Darin的回答,我根据十进制模板创建了自己的双重editortemplate。

@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"})

1 个答案:

答案 0 :(得分:1)

  

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

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

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

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

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