1

次のシナリオがあります: ContactController : ApiController

ContactController が Contact Model を返すようになりました。

Web アプリケーションから適切なビューを使用して、コントローラーが結果を Razor ビューとして渡すようにしたいと考えています。

このリンクを見つけました

これは、Darrel Miller が API コントローラー用の ViewEngineFormatter を持っている場所です。しかし、返されたモデルに使用する .cshtml ビューを指定する方法がわかりません。ViewEngineFormatter の WriteToStreamAsync メソッドにブレークポイントがあります。そこに到達し、オブジェクトをビューにキャストできなかったというエラーをスローします。

エラーがスローされる場所は次のとおりです。

    public override Task WriteToStreamAsync(Type type, object value, Stream stream, System.Net.Http.HttpContent content, TransportContext transportContext)
    {
        var view = (View)value;
        view.WriteToStream(stream, _viewEngine);
        var tcs = new TaskCompletionSource<Stream>();
        tcs.SetResult(stream);
        return tcs.Task;
    }

クライアント要求で指定されたデータ型が「html」である場合、apicontroller がかみそりのビューを返すようにする方法がわかりません。

どんな助けでも大歓迎です...

4

1 に答える 1

1

最新バージョンについては、このhttps://github.com/WebApiContrib/WebApiContrib.Formatting.RazorViewEngineを参照してください。それ以来、私が提出した元のコードは大幅に更新されています。

私の最初の実装では、.cshtml ファイルのストリームをモデルと共に View オブジェクトに渡す必要がありました。新しいものは、テンプレートを見つけるために命名規則を使用していると思います。私はかなり長い間このコードで作業しました!

于 2012-12-08T01:07:54.803 に答える