从HttpContext Angular和Web API获取数据
本文关键字:API 获取 数据 Web HttpContext Angular | 更新日期: 2023-09-27 18:24:22
在角度控制器中,我有这样的代码将$scope.myModel传输到Web API控制器:
$scope.upload[index] = $upload.upload({
url: settings.constants.uploadURL,
headers: { 'myHeaderKey': 'myHeaderVal' },
data: { model: $scope.myModel },
file: $file,
fileFormDataName: 'myFile'
}).then(function (response) { ...
Web API控制器post方法看起来像这个
public HttpResponseMessage Post()
{
return UploadFile(HttpContext.Current);
}
如何从HttpContext中获取数据:模型??
WebAPI并不是为以这种方式使用而设计的。具体来说,从WebAPI控制器方法中引用HttpContext.Current
通常是不好的做法。如果确实要检查请求或响应,则应通过ApiController
基类的属性引用它们,请参阅msdn文档。
通常,在这种情况下,人们更喜欢模型绑定。假设您在js:中
{
foo: "bar"
}
您应该在C#中声明一个映射到它的类:
public class MyRequestModel
{
public string Foo { get; set; }
}
通过声明您的API方法:
public HttpResponseMessage Post(MyRequestModel mdl)
{
// do stuff, mdl.Foo will have "bar" in it magically
}
这导致了将数据从javascript传输到C#的更面向对象的方式。它更具类型安全性,因为可以保证C#中的Foo
属性将具有string
或int
,或者您声明的任何属性,而不是自己解析请求。