2012-03-30 16 views
1

ViewModelに "float"という型のプロパティがあります。デフォルト値が "0"のTextBoxとして表示されています。しかし、まだ私はアプリケーションを実行し、フロートフィールドをASP.NET MVC 3で "Floats"が呼び出されていないEditorTemplate

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

私は、「共有」フォルダ&内の「EditorTemplates」フォルダを追加したが、以下の内容を持つ新しい「Float.cshtml」ファイルを作成しましたそれでも私はASP.NETがお客さまにどのように反応するかを見しようとしています0

おかげ

UPDATE のデフォルト値で表示されていますトム・テンプレートは、今まで、エンジンは、のようなもの、私のカスタムテンプレートを処理していません。

@Html.EditorFor(model => model.Latitude) 

、ビュー

[UIHint("LatLng")] 
    public float? Latitude { get; set; } 

をViewModelにオン

LatLng.cshtml 

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

を何もありませんデフォルトのテンプレートが使用されています。

+1

フォーム/マークアップにエディタを追加する方法は表示されません。あなたは 'Html.EditorFor()'を使っていますか? –

答えて

0

ViewData.TemplateInfo.FormattedModelValueをモデル内の文字列を返すように設定するだけで、ビューにその奇妙なロジックを行う必要はありません。新しい値をポストバックするために必要な場合(編集目的のため)、コントローラにロジックを追加して、文字列をフロートに戻す必要があります。

5

Floatは実際には.NETタイプではなく、C#タイプです。 FloatはSystem.Singleにマップするので、Float.cshtmlではなくSingle.cshtmlを作成する必要があります。

また、モデルデータにUIHint属性を指定するか、EditorまたはEditorForメソッドで使用するテンプレートを指定することで回避できます。

+0

テキストボックスに値0が含まれていることが画面に表示されるのは正常ですか?また、テンプレートに非常に新しい、それらの背後にあるアイデア、それらとの連携方法は?ありがとう – Bill

+0

はい、数値のテキストボックスはデフォルトで常に0を表示します。テンプレートは、基本的にはMVCのユーザーコントロールのバージョンで、好きなタイプのカスタム表示を作成することができます。 – mattytommo

+0

@bhaidar - 0が含まれている場合、0が表示されます。ええ、それはデータアイテム内の値が何であれ表示するのが普通です。 –

関連する問題