A
A
alexxxey_code2021-04-25 20:02:14
ASP.NET
alexxxey_code, 2021-04-25 20:02:14

An error occurs when calling the controller. What is it connected with?

The book describes an example of adding categories, but I have a problem with this. By clicking on Categories, the forms should be displayed, but they are not.
60859f00e49a1971406694.png6085a08093901217913072.png

public class CategoriesContoller : Controller
        {
            private ICategoryRepository repository;
            public CategoriesContoller(ICategoryRepository repo)
            {
                repository = repo;
            }
            public IActionResult Index() => View(repository.Categories);

            [HttpPost]
            public IActionResult AddCategory(Category category)
            {
                repository.AddCategory(category);
                return RedirectToAction(nameof(Index));
            }
            public IActionResult EditCategory(long id)
            {
                ViewBag.EditId = id;
                return View("Index", repository.Categories);
            }

            [HttpPost]
            public IActionResult UpdateCategory(Category category)
            {
                repository.UpdateCategory(category);
                return RedirectToAction(nameof(Index));
            }

            [HttpPost]
            public IActionResult DeleteCategory(Category category)
            {
                repository.DeleteCategory(category);
                return RedirectToAction(nameof(Index));
            }
        }

public interface ICategoryRepository
    {
        IEnumerable<Category> Categories { get; }
        void AddCategory(Category category);
        void UpdateCategory(Category category);
        void DeleteCategory(Category category);
    }

public class CategoryRepository : ICategoryRepository
    {
        private DataContext context;
        public CategoryRepository(DataContext ctx) => context = ctx;
        public IEnumerable<Category> Categories => context.Categories;

        public void AddCategory(Category category)
        {
            context.Categories.Add(category);
            context.SaveChanges();
        }

        public void UpdateCategory(Category category)
        {
            context.Categories.Update(category);
            context.SaveChanges();
        }
        public void DeleteCategory(Category category)
        {
            context.Categories.Remove(category);
            context.SaveChanges();
        }

    }

@model Category
<div class="row p-2">
    <div class="col-1"></div>
    <div class="col">
        <input asp-for="Name" class="form-control" />
    </div>
    <div class="col">
        <input asp-for="Description" class="form-control" />
    </div>
    <div class="col-3">
       @if (Model.Id == 0)
        {
            <button type="submit" class="btn btn-primary">Add</button>
        }
        else
        {
            <button type="submit" class="btn btn-outline-primary">Save</button>
            <a asp-action="Index" class="btn btn-outline-secondary">Cancel</a>
        }
    </div>
</div

@model IEnumerable<Category>

<h3 class="p-2 bg-primary text-white text-center">Categories</h3>

<div class="container-fluid mt-3">
    <div class="row">
        <div class="col-1 font-weight-bold">Id</div>
        <div class="col font-weight-bold">Name</div>
        <div class="col font-weight-bold">Description</div>
        <div class="col-3"></div>
    </div>
    @if(ViewBag.EditId == null)
            {
                <form asp-action="AddCategory" method="post">
                    @Html.Partial("CategoryEditor", new Category())
                </form>
            }
    @foreach(Category c in Model)
            {
               @if(c.Id == ViewBag.EdiId)
                {
                    <form asp-action="UpdateCategory" method="post">
                        <input type="hidden" name="Id" value="@c.Id"/>
                        @Html.Partial("CategoryEditor", c)
                    </form>
                }
                else
                {
                    <div class="row p-2">
                        <div class="col-1">@c.Id</div>
                        <div class="col">@c.Name</div>
                        <div class="col">@c.Description</div>
                        <div class="col-3">
                            <form asp-action="DeleteCategory" method="post">
                                <input type="hidden" name="Id" value="@c.Id"/>
                                <a asp-action="EditCategory" asp-route-id="@c.Id" class="btn btn-outline-primary">Edit</a>
                                <button type="submit" class="btn btn-outline-danger">Delete</button>
                            </form>
                        </div>
                    </div>
                }
            }
</div>

Answer the question

In order to leave comments, you need to log in

1 answer(s)
R
Roman, 2021-04-26
@yarosroman

https://....../Categories/Index works?
Show Sturtup.cs.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question