mvcでのWebフォームコントロールのレンダリング:ポストバックとイベントが正しくトリガーされないのはなぜですか?

ジェフローダー

そのため、多くの人と同じように、古い(そして非常に大きな)WebフォームアプリケーションをMVC4アプリケーションに移行しようとしています。書き直しは困難である(そして現実的には実行不可能である)ため、アプリケーションをMVCアプリケーションでラップしようとしています。そしてそこから部分を書き直します。古いWebフォームコントロールをレンダリングする、かなり成功したHtmlHelper拡張機能があります。これは次のようになります。

public static MvcHtmlString RenderClassicControl(this HtmlHelper html, string controlPath)
    {
        var sb = new StringBuilder();
        var stWriter = new StringWriter(sb);
        var htmlWriter = new HtmlTextWriter(stWriter);
        var page = new Page();
        page.PreInit += ((s, e) =>
        {
            var form = new HtmlForm();
            form.ID = "Form";
            form.Attributes.Add("enctype", "multipart/form-data");
            page.Controls.Add(form);
            var control = page.LoadControl(controlPath);
            form.Controls.Add(control);
            page.Controls.Add(form);
        });
        HttpContext.Current.Server.Execute(page, htmlWriter, true);
        return new MvcHtmlString(sb.ToString());
    }

私が抱えている問題は、レンダリングされたhtmlが現在のサイトと同じように見えても、そのコントロールでアクションを完了しても何も起こらないことです。リクエストコレクションには、(__ EVENTTARGETのように)表示されると予想されるものがありますが、それらは空であり、isPostbackはfalseです。私はここで何かが足りないことを期待しており、誰かがいくつかのアイデアを持っていることを望んでいます。時間を割いていただきありがとうございます!

ジェフローダー

私はブライアンボールの提案を受け入れることになった。default.aspxとmasterpageを追加し、それを介してコントロールをロードするだけでした

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ