如何将参数从视图传递到控制器?

问题描述 投票:0回答:1

我正在尝试编写一个小网站来预订会议室。我完成了添加房间没有问题。但是现在,我想编辑它们(比如重命名等)


RoomController在我的控制器中,我有动作EditerUneRoom接收Room对象(id,名称,人数)。但它始终是空的

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对象列表,其中显示了一个Actionlink,它应该让我进入房间的编辑页面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”。我在debug mod中尝试获取参数“Room editRoom”...但它始终为null。

有什么想法吗?

model-view-controller view controller
1个回答
0
投票

在控制器中,动作EditerUneRoom正在等待editRoom参数。但看起来你正在传递wroom。尝试更改ActionLink arg名称:

new { editRoom = room }
© www.soinside.com 2019 - 2024. All rights reserved.