Asp.net mvc 4 editorfor选择字符串模板而不是双精度模板
我的项目中有一个视图模型存在一些问题,该模型中包含许多双视图 即 在我看来,我有Asp.net mvc 4 editorfor选择字符串模板而不是双精度模板,asp.net-mvc-4,mvc-editor-templates,Asp.net Mvc 4,Mvc Editor Templates,我的项目中有一个视图模型存在一些问题,该模型中包含许多双视图 即 在我看来,我有 @Html.EditorForModel 如果在我的项目中没有其他自定义模板,这将正确呈现,并且我会得到一个文本框,其中有一个双精度 只要我在View/Shared/EditorTemplate中放入一个字符串模板,并在其中放入任何内容,该模板中的任何内容都将被呈现,而不是双模板 @using System.Globalization @functions { private object Format
@Html.EditorForModel
如果在我的项目中没有其他自定义模板,这将正确呈现,并且我会得到一个文本框,其中有一个双精度
只要我在View/Shared/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"})
我会认为,即使我覆盖了字符串模板,选择模板的顺序也会保持不变,并且双模板会像字符串模板存在之前一样被选择
字符串模板仅包含(无@model)
我在这里遗漏了什么,为什么在这里选择字符串模板
在这两种情况下,选择的都是字符串模板。double类型没有默认模板。以下是默认字符串模板的外观:
@Html.TextBox(
"",
ViewData.TemplateInfo.FormattedModelValue,
new { @class = "text-box single-line" }
)
我已经决定可以在views共享文件夹中放置双模板
它会呈现出这样的效果,但看起来我不该这么做
那样做
好吧,如果您对双精度类型的默认模板(即
string.cshtml
)不满意,您可以随时为其编写自定义模板。您比我快!我假设有一个内置的模板,它有点难说,没有,除了这种行为!你认为他们没有提供双重模板有什么原因吗?不,我不认为有什么特别的原因。可能不需要。对货币之类的东西使用十进制更为常见。因此,他们为Decimal类型提供了一个模板。
@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"})
@Html.TextBox(
"",
ViewData.TemplateInfo.FormattedModelValue,
new { @class = "text-box single-line" }
)