MVCのWebFormsスタイルの再利用可能なユーザーコントロールに最も近い機能は、htmlヘルパーです。 htmlヘルパーは、マークアップを返すメソッドです。推奨されるアプローチはHtmlHelper
オフ拡張メソッドのフォームまたはMVCページの他のいくつかのプロパティでそれらを実装することです:
public static IHtmlString MyControl(this HtmlHelper helper, string value) {
return new HtmlString("<p>" + value + "</p>");
}
あなたが直接あなたのMVCプロジェクトにこのメソッドを追加することができたり、別々のクラスに追加することができますとしょうかん。クラスライブラリが参照する必要があるのは、HtmlHelper
参照のSystem.Web.Mvc.dllだけです(ほかの型を使用する場合は、System.Web.dllも必要です)。表面的にHTMLヘルパーは、単にユーザーコントロールのようなマークアップを発しながら
通常は大きな違いがある、(この例では、MVC 3の新機能カミソリの構文を使用しています)
@Html.MyControl("my value")
そうのようなあなたのビューからそれらを呼び出します。最も重要なのは、MVCビューにWebFormsページのライフサイクルの概念がないことです。つまり、ユーザーコントロールとは異なり、htmlヘルパーは1回のパスでレンダリングされます。 WebFormsには、ページ上の他のコントロールとやりとりするためのサーバー側のイベントに接続できるInit、Load、Renderなどのマルチフェーズはありません。
あなたが話しているイベントの種類によっては、タスクを解決するための適切なMVC中心のテクニックがあるかもしれません。あなたは何をしたいの詳細を提供することができますか? HTMLヘルパーは非常に強力です。たとえば、TextBoxFor
のような組み込みのMVC入力コントロールでは、クライアント側の検証などを行うことができます。
これらの質問に関連しています(ただし、重複はありません)。[73902](http://stackoverflow.com/questions/73902/) asp-net-mvc-components)、[810187](http://stackoverflow.com/questions/810187/is-there-an-equivalent-to-monorail-view-components-for-the-asp-net-mvc –