次のシナリオがあります: 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 がかみそりのビューを返すようにする方法がわかりません。
どんな助けでも大歓迎です...