これは私にとって非常に難しい課題です。私たちは既存のASP.NET Webサイトを利用して、PLのみをMVCに変換しています。私たちのサイトは非常に複雑です。しかし、難しいのは、既存のカスタムコントロールをMVCに変換することです。カスタムコントロール(私はユーザーコントロールについては言及していません)はもちろんSystem.Web.UI.Controlを継承し、そのオブジェクトを一貫して使用するクラスです。たとえば、次のような既存のカスタムクラスの上部にいくつかのプロパティがあります。従来のASP.NETカスタムコントロールをMVCに変換
Dictionary<int, Control> configControls;
DropDownList kControl;
CheckBox confirmBox;
これらはすべて従来のASP.NETのタイプのWebコントロールの変数です。
だから私は何かが(最初から新しいカスタムコントロールを構築せずに)何ができるのか分かりましたが、HtmlHelperオブジェクトを使用することです。だから私はこれを試してみました:
(最初に私たちの新しいWebプロジェクトで私の新しいカスタムクラスの最上部にSystem.Web.MVC.Htmlを含んで使用して文を含める)
プライベートHtmlHelperのヘルパーを。 ディクショナリのconfigControls。 helper.DropDownList
これは機能しません。私はこのオブジェクトをこのように使うことはできないと思う?私は辞書でHtmlHelperを使用して、ヘルパーから変数型を外すことができると考えました。これらは単なる拡張メソッドであり、オブジェクトではありません。
私は古典的なASP.NETなどから継承することができた汎用の "コントロール"のようなものには対応していません。確かに、MVC obviusly(ステートレスで完全に異なる方法)ではなく、MVCで同じコンセプトのものを使うことができますか?
だから私は何かが(最初から新しいカスタムコントロールを構築せずに)何ができるのか分かりましたが、HtmlHelperオブジェクトを使用することです。 (最初に私たちの新しいWebプロジェクトで私の新しいカスタムクラスの最上部にSystem.Web.MVC.Htmlを含んで使用して文を含める)
private HtmlHelper helper;
Dictionary configControls;
helper.DropDownList
が、これは動作していない。だから私はこれを試してみました。このアプローチがカスタムコントロールで機能するかどうかはわかりません。ヘルパー変数を使用しようとすると、署名にHtmlHelperパラメータが渡されている既存の拡張メソッドの内部にある場合を除き、拡張メソッドはありません。そのため、私のカスタムクラスの外部にあるprivate変数を作成すると、ヘルパーをするときから選択するインテリセンス。だから私はこのようなオブジェクトを定義する必要がありますか?
private HtmlHelper htmlHelper = new HtmlHelper();
しかし、ViewContextとIViewDataContainerをparamsとして要求しています。私は、このカスタムクラスにHMTLの文字列を作成してExtensionメソッドに渡して最終的にフィールドを吐き出すため、そのビューについては何も知らないカスタムメソッドを構築しています(これは必要ありません)。多分私はこのようなカスタムクラスでこのようにHtmlHelperを使用することはできません。
「コントロール」の代わりにそのオブジェクトを使用できますか?たぶん私は辞書の変数でも、コントロールの代わりに型オブジェクトを使うことができますか?私は知らないし、辞書からその値を参照または参照する必要があるときに、オブジェクトをHtmlHelperとタイプするようにキャストしますか?しかし、今は、辞書でHtmlHelperオブジェクトを使用して、ヘルパーの変数型をオフにできると考えました。しかし、それらは単なる拡張メソッドであり、オブジェクトではありません。
あなたがこれを読んだとき、私はここに何か意味があると思います。
私は "Classic ASP.net"を見るのが大好きです:) – Hugoware
これを指摘してくれてありがとう。私はこの質問についてとても奇妙なことを理解できませんでした。 :) –