1

我们有以下场景: ContactController : ApiController

现在 ContactController 返回 Contact Model。

我们希望控制器通过使用 Web 应用程序中的适当视图将结果作为剃刀视图传递。

我找到了这个链接

这就是 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 回答