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

Posted

技术标签:

【中文标题】如何将参数从视图传递到控制器?【英文标题】:How do I pass parameters from view to controlller? 【发布时间】:2019-04-26 18:23:57 【问题描述】:

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


房间控制器 在我的控制器中,我有接收 Room 对象(id、姓名、人数)的操作 EditerUneRoom。 但它总是为空

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”。我正在调试模式中尝试获取参数“Room editRoom”... 但它始终为空。

有什么想法吗?

【问题讨论】:

【参考方案1】:

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

new  editRoom = room 

【讨论】:

以上是关于如何将参数从视图传递到控制器?的主要内容,如果未能解决你的问题,请参考以下文章

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

如何使用 AJAX 将数据从视图传递到控制器

CodeIgniter:将参数从视图传递到控制器?

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

如何将参数从容器视图的父 ViewController 传递到该容器视图的 PageViewController?

C# MVC 使用 dotnetfiddle 将参数从视图传递到控制器