我们有以下情况: ContactController:ApiController
现在,ContactController返回联系人模型。
我们希望控制器使用Web应用程序中的相应视图将结果作为剃刀视图传递。
我发现了link
这是Darrel Miller为api控制器提供ViewEngineFormatter的地方。但我不知道如何指定用于返回模型的.cshtml视图。我在ViewEngineFormatter的WriteToStreamAsync方法中有一个断点。它到达那里并抛出一个错误,说它无法将对象转换为View。
这是它抛出错误的地方:
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返回剃刀视图。
任何帮助将不胜感激......
答案 0 :(得分:1)
您可能希望查看此https://github.com/WebApiContrib/WebApiContrib.Formatting.RazorViewEngine以获取更新版本。我提交的原始代码自那时起已经更新。
我的原始实现需要将.cshtml文件的流与模型一起传递到View对象。我认为较新的东西使用命名约定来查找模板。我在很长一段时间内使用了这段代码!