Skip to main content
 首页 » 编程设计

c#之ASP.NET Web API 方法模型 null

2024年05月29日44虾米姐

所以,首先我最好解释一下我是通过 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); 

希望这对您有所帮助。