ValidateAntiForgeryToken код возврата 400 - PullRequest
0 голосов
/ 30 декабря 2018

Проблема в том, что если я попытаюсь использовать ValidateAntiForgeryToken для своего кода возврата статуса 400. Почему не удается найти страницу моего просмотра?

Контроллер:

public IActionResult Edit(int id) {
    var model = this.categoryService.GetById(id);
    return View(model);
}

[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Edit(CategoriesViewModel model) {
    if (ModelState.IsValid) {
        this.categoryService.Update(model);
        return RedirectToAction(nameof(Category));
    }

    return this.View(model.Id);
}

Просмотр:

@using CakeStore.App.Areas.Admin.Models.Categories;
@model CategoriesViewModel
@{
    ViewData["Title"] = "Edit";
    Layout = "~/Areas/Admin/Views/Shared/_AdminLayout.cshtml";        
}

<h1 class="text-center text-header-page">Edit Category</h1>
<hr class="hr-admin-divider" />
<form class="mx-auto w-50 form-horizontal" method="post" action="Edit">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>
    <div class="form-group">
        <input asp-for="@Model.Id" type="hidden" name="id" value="@Model.Id"/>
    </div>
    <div class="form-group">
        <label asp-for="@Model.Name"></label>
        <input asp-for="@Model.Name" type="text" value="@Model.Name" class="form-control" id="name" name="name">
        <span asp-validation-for="@Model.Name" class="text-danger"></span>
    </div>
    <div class="button-holder d-flex justify-content-center">
        <button type="submit" class="btn button-black-white">Edit</button>
    </div>
</form>

Модель:

public class CategoriesViewModel {
    public int Id { get; set; }
    [Required]
    [StringLength(22,MinimumLength =3,ErrorMessage =AdminConstants.NameRange)]
    public string Name { get; set; }
}

1 Ответ

0 голосов
/ 31 декабря 2018

Вы не сообщили форме, чтобы содержать токен.Попробуйте это в вашей форме:

<form asp-antiforgery="true" class="mx-auto w-50 form-horizontal" method="post" action="Edit">

ПРИМЕЧАНИЕ: помните, что вы должны использовать директиву @addTagHelper, чтобы использовать «asp-antiforgery»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...