Ich habe eine ASP.NET Core-Webanwendung. Einige meiner Anrufe, wie das Löschen, bevorzuge ich mit einer reinen Ajax-Anfrage anstatt mit einem tatsächlichen MVC-Formular und Postback. Mein Controller verfügt sowohl über Aktionen, die Ansichten zurückgeben, als auch über Aktionen wie die darunter liegende Löschmethode, die sich eher wie eine API verhält.Param ist Null, wenn AJAX-Anforderung an Controller in ASP.NET MVC Core
Mit dem unten Kern komme ich erfolgreich in die Aktion, aber die ID-Parameter ist immer Null. Was mache ich falsch?
MVC Controller:
// POST: Users/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Delete([FromBody] string id)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var user = await _userManager.FindByIdAsync(id);
if (user == null)
{
return NotFound();
}
await _userManager.DeleteAsync(user);
return Ok(user);
}
AJAX Anfrage:
$.ajax({
url: '@Url.Action("Delete", "Projects")',
contentType: "application/json",
type: "POST",
headers:
{
"RequestVerificationToken": '@GetAntiXsrfRequestToken()'
},
data: JSON.stringify({ "id": "ABC123" }),
success: function() {
alert('Deleted Successfully');
// Remove row from grid.
}
});
Ist es üblich, beiden Aktionen zu schaffen zu haben, die Ansichten und Aktionen zurück, die für AJAX Requests in einem ASP-ähnlichen API-Aufrufen handeln .NET MVC-Webanwendung? Ich halte es nicht für einen API-Aufruf, weil ich immer noch die AntiForgeryToken weitergeben möchte.
Ist param noch 'null', wenn Sie einen Beitrag machen Anfrage mit zB Postman? Ich versuche nur zu überprüfen, ob 'URL.Action()' die richtige URL generiert. – Ignas