我的项目中的视图模型存在一些问题,其中包含多个双打
即
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"})
答案 0 :(得分:1)
我在这里遗漏了什么,为什么选择字符串模板?
在这两种情况下,都是选择的String模板。 double类型没有默认模板。以下是默认字符串模板的外观:
@Html.TextBox(
"",
ViewData.TemplateInfo.FormattedModelValue,
new { @class = "text-box single-line" }
)
我已经确定我可以在views共享文件夹中放置一个双模板 它会反过来呈现,但似乎我不应该这样做 那样做。
好吧,如果您对double类型的默认模板(string.cshtml
)不满意,您可以随时为它编写自定义模板。