Chciałbym towrzyć nowego Reviewera za pomocą przycisku w /Reviewers. Ale po uzupełnieniu formularza w //Reviewers/Create i kliknięciu nic się nie dzieje. Nie wraca do /Reviewers ani nie dodaje nowego Reviewera w Bazie danych
Index:
<div style="position:fixed;right:100px;bottom:100px" class="text-white">
<a asp-controller="Reviewers" asp-action="Create" class="btn btn-success"><i class="bi bi-plus-circle">Add New</i></a></div>
/Reviewers/Create
@*Model*@
@model Reviewer
@*ViewData*@
@{
ViewData["Title"] = "Create a new Reviewer";
}
<div class="row text">
<div class="col-md-8 offset-2">
<p>
<h1>Add a new Reviewer</h1>
</p>
<div class="row">
<div class="col-md-8 offset-2">
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group text-center">
<img class="border-info rounded-circle" style="max-width:150px" id="ProfilePicturePreview"/>
</div>
<div class="form-group">
<label asp-for="ProfilePicture" class="control-label"></label>
<input asp-for="ProfilePicture" class="form-control" />
<span asp-validation-for="ProfilePicture" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="FullName" class="control-label"></label>
<input asp-for="FullName" class="form-control" />
<span asp-validation-for="FullName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Note" class="control-label"></label>
<input asp-for="Note" class="form-control" />
<span asp-validation-for="Note" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-outline-success float-right" />
<a class="btn btn-outline-danger" asp-action="Index" asp-controller="ReviewersController">Back</a>
</div>
</form>
</div>
</div>
</div>
</div>
@section Scripts{
<script>
$(document).ready(function () {
var output = document.getElementById('ProfilePicturePreview');
output.src = $("#ProfilePicture").val();
})
$("#ProfilePicture").on("change", function () {
var output = document.getElementById('ProfilePicturePreview');
output.src = $(this).val();
})
</script>
}
reviewersController
using Microsoft.AspNetCore.Mvc;
using Project_ASPNET_14040.Data.Services;
using Project_ASPNET_14040.Models;
namespace Project_ASPNET_14040.Controllers
{
public class ReviewersController : Controller
{
private readonly IReviewersService _service;
public ReviewersController(IReviewersService service)
{
_service = service;
}
public async Task<IActionResult> Index()
{
var data = await _service.GetAllAsync();
return View(data);
}
//Get request Reviewers/Create
public IActionResult Create()
{
return View();
}
[HttpPost]
public async Task<IActionResult> Create([Bind("FullName", "ProfilePicture", "Note")]Reviewer reviewer)
{
if (!ModelState.IsValid)
{
return View(reviewer);
}
await _service.AddAsync(reviewer);
return RedirectToAction(nameof(Index));
}
//Get : Reviwers/Details/id
public async Task<IActionResult> Details(int id)
{
var reviewerDetail = await _service.GetByIdAsync(id);
if(reviewerDetail == null)
{
return View("NotFound");
}
return View(reviewerDetail);
}
//Get: Reviewers/Edit
public async Task<IActionResult> Edit(int id)
{
var reviewerDetail = await _service.GetByIdAsync(id);
if (reviewerDetail == null)
{
return View("NotFound");
}
return View(reviewerDetail);
}
[HttpPost]
public async Task<IActionResult> Edit(int id, [Bind("Id","FullName", "ProfilePicture", "Note")] Reviewer reviewer)
{
if (!ModelState.IsValid)
{
return View(reviewer);
}
await _service.UpdateAsync(id,reviewer);
return RedirectToAction(nameof(Index));
}
}
}
IReviewerService
using Project_ASPNET_14040.Models;
namespace Project_ASPNET_14040.Data.Services
{
public interface IReviewersService
{
Task<IEnumerable<Reviewer>> GetAllAsync();
Task<Reviewer> GetByIdAsync(int id);
Task AddAsync(Reviewer reviewer);
Task<Reviewer> UpdateAsync(int id, Reviewer newReviewer);
void Delete(int id);
}
}
ReviewerService
using Microsoft.EntityFrameworkCore;
using Project_ASPNET_14040.Models;
namespace Project_ASPNET_14040.Data.Services
{
public class ReviewersService : IReviewersService
{
private readonly BookStoreDbContext _context;
public ReviewersService(BookStoreDbContext context)
{
_context = context;
}
public async Task AddAsync(Reviewer reviewer)
{
await _context.Reviewers.AddAsync(reviewer);
await _context.SaveChangesAsync();
}
public void Delete(int id)
{
throw new NotImplementedException();
}
public async Task<IEnumerable<Reviewer>> GetAllAsync()
{
var result = await _context.Reviewers.ToListAsync();
return result;
}
public async Task<Reviewer> GetByIdAsync(int id)
{
var result = await _context.Reviewers.FirstOrDefaultAsync(r => r.Id == id);
return result;
}
public async Task<Reviewer> UpdateAsync(int id, Reviewer newReviewer)
{
_context.Update(newReviewer);
await _context.SaveChangesAsync();
return newReviewer;
}
}
}
Link do github