私はアイテムのリストを表示するビューを持っています。ユーザーが「編集」を選択したときに既存のアイテムを表示したり、ユーザーが「作成」をクリックしたときに新しいアイテムを表示したいとします。この「単一項目」ウィンドウは多くの異なる場所で呼び出されますので、「編集」と「作成」の機能を1つのビューに組み合わせることをお勧めします。私は、呼び出し元と同じレベルのビューページを作成し、このアイテムウィンドウで「送信」をクリックすると、アイテムコントローラがそのジョブを実行し、呼び出し元ページ(アイテムリストなど)にリダイレクトする発呼者)。しかし、私は別のアプローチを試してみたい。これは、このアイテムウィンドウをポップアップウィンドウとして作ることを望んでいる。ユーザが "show modal"ボタンをクリックすると、呼び出し側のページがコントローラへのajax呼び出しを行い、アイテムのデータ(またはそのid)パラメータを取得し、コントローラはMvcHtmlStringを動的に生成し、呼び出し側に戻り、受け取ったMvcHtmlStringを使用してポップアップウィンドウを表示します。すべてがうまくいくようですが、私のコントローラーの大量のhtmlコードは非常に乱雑です。MVC HtmlHelperメソッドを使用するコントローラのLaberFor()、EditorFor()
だから、私は、コントローラにHtml.LabelFor(item => item.Name)
、またはHtml.EditorFor(item => item.Name)
のようなものを行うことができますどのように、例えば、私は、オブジェクトタイプ「項目を」持って、コントローラにMvcHtmlStringを生成するのHtmlHelperを使用する方法を疑問に思うとMvcHtmlStringを取得していますか?
なぜコントローラがhtmlを作成していますか? (Viewフォルダに定義されている)部分ビューを作成して、コントローラに部分ビューを返すことはできませんか? – Sparrow
htmlで特別なことをしたい場合は、部分的な表示やテンプレートの表示を検討してください。 –
[この質問](http://stackoverflow.com/q/26362910/215552)とビューの外にHTMLを構築する方法については、その回答を参照してください。 –