Как передать параметры из представления в контроллер? - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь написать небольшой сайт, чтобы забронировать конференц-залы. Я сделал добавление номеров без проблем. Но теперь я бы хотел их отредактировать (например, переименовать и т. Д.)


RoomController В моем контроллере у меня есть действие EditerUneRoom, которое получает объект Room (идентификатор, имя, номер человека). Но это всегда ноль

using RoomBooking.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace RoomBooking.Controllers
{
    public class RoomController : Controller
    {
        // GET: Room
        public ActionResult Manage()
        {
            List<Room> listRoom = new List<Room>();

            using (var context = new RoomBookingEntities())
            {
                listRoom = context.Room.ToList();
            }
            return View(listRoom);
        }

        public ActionResult AjouterUneRoom()
        {
            return View();
        }

        public ActionResult ErrorMsg(string msg)
        {
            ErrorMsg messageErreur = new ErrorMsg();
            messageErreur.text = msg;
            ViewBag.Message = messageErreur;
            return View();
        }

        public ActionResult EditerUneRoom(Room editRoom)
        {
            var iden = editRoom.id;
            return View();
        }

        public ActionResult AddRoom(string nom, int nbperson)
        {
            Room newRoom = new Room();
            newRoom.nom = nom;
            newRoom.nbPlace = nbperson;

            using (var context = new RoomBookingEntities())
            {
                var roomEntity = context.Room.FirstOrDefault(r => r.nom == nom);
                if(roomEntity == null) 
                {
                    context.Room.Add(newRoom);
                    context.SaveChanges();
                }
                else
                {
                    return RedirectToAction("ErrorMsg", "Room",new { msg = "Cette salle existe déjà !" });
                }

            }

            return RedirectToAction("Manage", "Room");
        }

    }
}

В представлении у меня есть список объектов Room, отображаемых с помощью ссылки Actionction, которая должна привести меня на страницу редактирования комнаты. View

@model List<Room>
@{
    ViewBag.Title = "Manage";
}

<h2>Manage</h2>

@Html.ActionLink("Ajouter une salle de réunion", "AjouterUneRoom", "Room")

@foreach (var room in Model)
{
    <div>
        <b>Identifiant : </b>
        @room.id
    </div>

    <div>
        <b>Nom : </b>
        @room.nom
    </div>

    <div>
        <b>Nombre de place :</b>
        @room.nbPlace
    </div>

    @Html.ActionLink("Modifier", "EditerUneRoom", "Room", new { wroom = room });
    <br />
}

Я работаю над "EditerUneRoom". Я пытаюсь в моде отладки, чтобы получить параметр "Room editRoom" ... Но это всегда ноль.

Есть идеи, пожалуйста?

1 Ответ

0 голосов
/ 26 апреля 2019

В контроллере действие EditerUneRoom ожидает аргумент editRoom.Но похоже, что вы проходите в wroom.Попробуйте изменить имя аргумента ActionLink:

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