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

时间:2019-04-26 18:23:58

标签: model-view-controller view controller

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


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,该链接可让我进入房间的编辑页面 查看

@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”。我正在调试mod中尝试获取参数“ Room editRoom” ... 但这总是空的。

请问有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

new { editRoom = room }