2011-08-25 13 views
9

私は現在、ASP.NET MVC 3 w/Razorで足を濡らしていますが、HTML入力要素をレンダリングする最も適切な方法について少し混乱しています。HtmlHelper.EditorFor対Html.TextBox対HTML入力

  1. (文字列または数値のため)Html.TextBoxメソッドを使用してHtmlHelperのEditorFor方法
  2. を使用した:私はそれを見たよう

    、モデルのプロパティのために、これらの要素をレンダリングするための3つの方法があります

  3. 普通のhtml入力要素を使用し、インラインレイザータグを使用して値を要素に配置します。

これを行うにはどのような方法が推奨されますか?私は、レンダリングされたHTMLを何もコントロールしていないので、EditorForメソッドに少し気になりました.MVCフレームワークのメールの目標の1つは、WebFormのオーバー・抽象化を避けることだと思いました。

あなたはどう思いますか?これのベストプラクティスは何ですか?

ありがとうございます!

答えて

5

Html.EditorForが好ましい方法です。指定されたタイプのカスタムeditor templatesを記述することによってHTMLを制御できます。 ModelMetadataでは、生成された入力フィールドのタイプを制御できます。追加のカスタム属性を適用する必要がある場合は、custom metadata providerと書くこともできます。

1

実際には、EditorFor:you can create custom templates for each typeによって生成されたHTMLを制御できます。

EditorForは、もっと複雑なものをしたいだけでテキストボックスだけをしたいときにいくつかの明確な利点があります。私は、 "staff"プロパティのエディタが必要な場合があります。だから、私のEditorForテンプレートは、その中のスタッフリストとのドロップダウンを作成し、右のものを選択し、またリストを姓でフィルタリングするために使用されるJavaScriptを含むテキストボックスを追加します(かなり長いので)。手動でもできますが、なぜですか?私のビューは、EditorFor(何でも)を呼び出し、テンプレートが呼び出されます。その結果、コードは非常にきれいです。

私は、そうしないと意味がある特定のケースがない限り、EditorForを使用することをお勧めします。後でエディタをカスタマイズすることを決めた場合は、そのタイプのテンプレートを変更してください。良い例は、日付です。基本的なEditorForはテキストボックスですが、jQueryの日付ピッカーをフックするカスタムテンプレートを作るのは簡単です。 EditorForを使用している場合は、HTMLテキストボックスを使用してすべてをインラインで処理することはできません。

0

最も適切な方法はHTML.EditorForです。指定したタイプのエディタテンプレートを作成することができます。また、フォームはフォーム送信時にModelViewオブジェクトに自動的にバインドされます。

関連する問題