プロジェクト内のビュー モデルにいくつかの問題があり、その中にいくつかの double が含まれています。
すなわち。
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>
ここで何かが足りないのですが、なぜここで文字列テンプレートが選択されているのですか?
ビューの共有フォルダーに二重のテンプレートを配置すると、代わりにそれがレンダリングされると判断しましたが、そうする必要はないようです。
編集:
Darin's answer に従って、10 進テンプレートに基づいて独自のダブル エディター テンプレートを作成しました。
@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"})