2

プロジェクト内のビュー モデルにいくつかの問題があり、その中にいくつかの 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"})
4

1 に答える 1