2

ベース コントローラーから実行しようとしましRedirectToAction(actionResult)たが、IntelliSense はこのオーバーロードを示しませんでした。RedirectToAction がすべての T4MVC コントローラー部分クラスに配置されていることがわかりました。このように実装された理由はなんとなくわかります...しかし、コントローラーの拡張メソッドになる代替実装を用意したほうがよいのではないでしょうか? または、私の場合のより良い解決策はありますか?

4

4 に答える 4

3

もし、あんたが

なぜこのように実装されたのか理解できます...

次に、ベースコントローラーで同じ方法で実装でき、準備完了です

    private ActionResult RedirectToAction(ActionResult actionResult)
    {
        var callInfo = actionResult.GetT4MVCResult();
        return RedirectToRoute(callInfo.RouteValueDictionary);
    }
于 2012-06-11T05:10:57.157 に答える
1

難しいのは、RedirectToActionの実装がController.RedirectToRouteを呼び出す必要があることです。これは保護されており、パブリックではありません。したがって、拡張メソッドから呼び出すことはできません。

this.RedirectToAction(...)もう1つの欠点は、それが機能したとしても、単にではなく電話をかける必要があることですRedirectToAction(...)

于 2012-07-29T03:29:33.453 に答える
0

これは役立つかもしれません。それは私がしばらく前に出した答えです あなたが探しているものかもしれません

リダイレクト

于 2012-06-28T23:47:50.437 に答える
0

IntelliSense だけを機能させたい場合は、独自の拡張メソッドを作成できます。これは、T4MVC コントローラーの部分クラスによって提供されるクラス メンバー メソッドよりも低い優先度で解決されるため、IntelliSense に参加する必要がありますが、実際にはコンパイラによって影響を受けることはありません。

より高い哲学的レベルで「なぜ彼らはそんなことをしたのか?」と尋ねているのなら、残念ながら本当の専門家に任せなければなりません。

于 2012-06-10T20:20:23.283 に答える