所以,首先我最好解释一下我是通过 AngularJS 调用这个方法的。我还有许多其他 Controller ,但这个 Controller 的独特之处在于该模型只有一个属性:
public class Subscriber
{
public string Email { get; set; }
}
所以我的 Controller 方法(非常简单)看起来像这样:
[HttpPost]
[Route("")]
public async Task<IHttpActionResult> Create(Subscriber model)
{
// Try to find the subscriber
var subscriber = await this.service.GetAsync(model.Email);
// If the subscriber does not exist
if (subscriber != null) {
// Create the subscriber
this.service.Create(model);
// Save the datbase changes
await this.unitOfWork.SaveChangesAsync();
}
return Ok();
}
我没有创建 RequestModel,尽管我可能只是为了在模型为 null 时停止调用我的方法。
所以,问题在于,模型始终为空。 我的 AngularJS 服务如下所示:
.service('SubscriberService', ['Api', function (api) {
var apiUrl = 'api/subscribers';
// Subscribe
this.subscribe = function (email) {
// Create our model
var model = {
email: email
};
console.log(model);
// Create our subscriber
return $http.post(apiUrl, model);
};
}])
其中,控制台日志显示具有电子邮件值的模型。 在我的网络配置中,我有这一行:
serializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
它处理 Camel 大小写,尽管我也尝试过使用 Pascal 大小写但无济于事。
有谁知道为什么它不起作用?我花了太多时间盯着它看。
请您参考如下方法:
在您的第二个代码块中,您使用以下内容:
return Ok();
通过这样做,您只是用一个空的 HTTP 200 响应来回答您的 api 调用。您应该使用从数据库加载的模型进行回答。
我建议尝试:
return Ok(subscriber);
希望这对您有所帮助。
