[英]ASP.NET Core 2.0 request failed
我有以下API控制器:
[HttpPost]
public async Task Post([FromBody]Statistics value)
{
if(_user == null) _user = await _userManager.GetUserAsync(HttpContext.User);
if(_user.Statistics == null) _user.Statistics = new List<Statistics>();
_user.Statistics.Add(value);
Context.SaveChanges();
}
我正在嘗試發送一些數據:
$("#submit-button-clicked").click(function () {
$.ajax({
url: 'api/Statistics ',
type: 'POST',
dataType: "json",
contentType: 'application/json',
data: JSON.stringify({
StatX: document.getElementById("input-statisticsX").value,
StatY: document.getElementById("input-statisticsY").value,
MeasurementDate: document.getElementById("input-datetime").value
}),
success: function (data) {
location.reload();
}
});
});
但是請求失敗了(在Visual Studio中,我收到“失敗的請求:1”。我猜路由工作正常,因為它不會顯示請求失敗了,所以解析數據可能是問題嗎?。可能是什么問題?( 輸入- statisticsX和input-statisticsY只是數字)。
***統計信息類如下所示:
public class Statistics
{
[Key]
public int Id { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
public int StatX { get; set; }
public int StatY { get; set; }
public DateTime MeasurementDate { get; set; }
}
如我所見,這將是以下兩件事之一:
我將向您展示一些示例代碼,該操作如何完成,因此請查看您的代碼以查看出現了什么問題。
首先,我將一些測試值放入“發布”視圖中:
<h2>statistics with ajax</h2>
<dl>
<dt>Stat X</dt>
<dd id="input-statisticsX">2</dd>
<dt>Stat Y</dt>
<dd id="input-statisticsY">3</dd>
<dt>Measurement Date</dt>
<dd id="input-datetime">2018-09-06 00:00:00.000</dd>
</dl>
<a id="submit-button">Statistics</a>
@section Scripts {
<script src="~/js/ajaxTest.js"></script>
}
然后在ajaxTest.js文件中,我將檢查我們是否從視圖中獲取正確的值:
var value =
{
StatX: 0,
StatY: 0,
MeasurementDate: ""
};
value.StatX = document.getElementById("input-statisticsX").innerHTML;
value.StatY = document.getElementById("input-statisticsY").innerHTML;
value.MeasurementDate = document.getElementById("input-datetime").innerHTML;
$("#submit-button").click(function () {
$.ajax({
url: 'api/statistics ',
type: 'POST',
dataType: "json",
contentType: 'application/json',
data: JSON.stringify(value),
success: function (data) {
location.reload();
}
});
});
最后在控制器中,我將這樣編寫Post方法:
[Route("api/statistics")]
[HttpPost]
public async Task Post([FromBody] Statistics value)
{
var stats = new List<Statistics>();
stats.Add(value);
// and some other code ...
var _user = await _userManager.GetUserAsync(HttpContext.User);
// ...
}
做完了 在您的代碼中檢查這三個步驟,這些都與您可能遇到的解析問題有關。 還不確定要對userManager和user做什么?
2天后我找到了解決方案。 問題是我忘記在Startup.cs中添加存儲庫服務,並且在錯誤的位置尋找解決方案。 API現在可以正常工作。 感謝大家的時間和幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.