Короче говоря, я создал веб-сайт asp. net mvc, детский магазин. Я добавил новое действие в контроллере продуктов с именем AddReview (), которое должно добавить комментарий к существующему продукту на моем сайте.
- Я вхожу в систему как пользователь с ролью «Пользователи»
- Я пытаюсь добавить отзыв (комментарий),
- Меня всегда перенаправляют на страницу входа.
- Я пытаюсь войти, даже если я уже вошел
- И затем я получаю сообщение «К сожалению, запрошенная страница не может быть найдена!» по URL-адресу "http://localhost: 61356 / Products / AddReview "
Когда я добавляю атрибут [AllowAnonymous], действие работает нормально, поэтому это не проблема для действие на контроллер продукта.
Есть ли у кого-нибудь какая-либо информация о том, что я упускаю или делаю неправильно. Я ценю вашу помощь!
Краткая версия контроллера продукта:
[Authorize(Roles = "Admin")]
public class ProductsController : Controller
{
private readonly IUnitOfWork<StoreContext> _unitOfWork = new GenericUnitOfWork<StoreContext>();
private readonly IGenericRepository<Category> _categoryRepo;
private readonly IGenericRepository<Product> _productRepo;
private readonly IGenericRepository<ProductImage> _productImageRepo;
[HttpPost]
[ValidateAntiForgeryToken]
[Authorize(Roles="Users")]
public ActionResult AddReview(int id, string comment)
{
Review review = new Review();
var productToUpdate = _productRepo.Find(id);
review.Product = productToUpdate;
review.ProductId = productToUpdate.ID;
review.UserId = User.Identity.Name;
review.Comment = comment;
review.DateWriten = DateTime.Now.ToUniversalTime();
productToUpdate.Reviews.Add(review);
if (ModelState.IsValid)
{
_unitOfWork.GenericRepository<Review>().Add(review);
_productRepo.Update(productToUpdate);
_unitOfWork.Save();
return RedirectToAction("Details", productToUpdate);
}
return View("Details", productToUpdate);
}}
весь класс контроллера продукта можно увидеть на ProductController
Форма в представлении:
@if (Request.IsAuthenticated && User.IsInRole("Users")){
<div class="bg-white rounded shadow-sm p-4 mb-5 rating-review-select-page col-md-12">
<h3 class="mb-4">Leave a review</h3>
@using (Html.BeginForm("AddReview", "Products", FormMethod.Post))
{
@Html.AntiForgeryToken()
<label>Your Comment</label>
<textarea name="comment" class="form-control" cols="50"></textarea>
@Html.HiddenFor(model => model.ID);
<button class="btn btn-primary btn" type="submit"> Submit Comment </button>
}
</div>}
Заранее спасибо.