Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 下拉列表值未传递给控制器_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 4 下拉列表值未传递给控制器

Asp.net mvc 4 下拉列表值未传递给控制器,asp.net-mvc-4,Asp.net Mvc 4,这个问题应该很简单。。我试图将视图中下拉列表中的值传递给控制器。。我没有收到错误,但它正在发送该属性的空值。请帮忙 我的代码如下: [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create(FormCollection collection) { var selectedValue = collection["BuildingList"]; } 控制器: public ActionResult Create(

这个问题应该很简单。。我试图将视图中下拉列表中的值传递给控制器。。我没有收到错误,但它正在发送该属性的空值。请帮忙

我的代码如下:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(FormCollection collection)
{
   var selectedValue = collection["BuildingList"];
}
控制器:

    public ActionResult Create()
    {
        var list = new [] 

            { 
                new Room{ RoomID = 1, Building = "FAYARD HALL"},
                new Room{ RoomID = 2, Building = "WHATEVER HALL"},
                new Room{ RoomID = 3, Building = "TIME SQUARE"},
                new Room{ RoomID = 4, Building = "MISSISSIPPI"},
                new Room{ RoomID = 5, Building = "NEW YORK"},

            };


        var selectList = new SelectList(list,"RoomID", "Building");
        ViewData["BuildingList"] = selectList;  

        return View();
    }

    //
    // POST: /Room/Create

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(Room room)
    {
        if (ModelState.IsValid)
        {
            db.Rooms.Add(room);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(room);
    }
我的看法是:

    <div>
        @Html.LabelFor(model => model.Building, "Building")
    </div>
    <div>

        @Html.DropDownList("BuildingList", String.Empty)
        @Html.ValidationMessageFor(model => model.Building)
    </div>
请帮忙


谢谢。

您的下拉列表是否已填充?考虑到您的代码,我认为您需要执行以下操作:

@Html.DropDownListFor(model => model.Building, ViewData["BuildingList"])
即,将选定值绑定到房间的建筑属性,并使用视图模型中的下拉列表填充该列表

我也不确定你的意图是什么。在下拉列表中填充房间,然后根据选择创建新房间,这似乎有点可疑

编辑

好的,我会让你的事情变得容易很多

我将从你们的课程开始。这是我假设您正在使用的房间:

public class Room
{
    public int RoomId { get; set; }
    public string Building { get; set; }
}
现在,让我们做一些比使用ViewData更好的事情。我已经为您创建了一个视图模型。您将使用选择列表填充此列表,并且在发布表单时,您在视图中选择的项目将绑定到SelectedRoomId中

public class ViewModel
{
    public int SelectedRoomId { get; set; }
    public SelectList RoomOptions { get; set; }
}
控制器

看法


经过考验。祝你好运

您的下拉列表是否已填充?考虑到您的代码,我认为您需要执行以下操作:

@Html.DropDownListFor(model => model.Building, ViewData["BuildingList"])
即,将选定值绑定到房间的建筑属性,并使用视图模型中的下拉列表填充该列表

我也不确定你的意图是什么。在下拉列表中填充房间,然后根据选择创建新房间,这似乎有点可疑

编辑

好的,我会让你的事情变得容易很多

我将从你们的课程开始。这是我假设您正在使用的房间:

public class Room
{
    public int RoomId { get; set; }
    public string Building { get; set; }
}
现在,让我们做一些比使用ViewData更好的事情。我已经为您创建了一个视图模型。您将使用选择列表填充此列表,并且在发布表单时,您在视图中选择的项目将绑定到SelectedRoomId中

public class ViewModel
{
    public int SelectedRoomId { get; set; }
    public SelectList RoomOptions { get; set; }
}
控制器

看法


经过考验。祝你好运

模型绑定在mvc中的names属性的帮助下进行

在您的情况下,控件的名称为BuildingList:

因此,在控制器上,操作如下:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(FormCollection collection)
{
   var selectedValue = collection["BuildingList"];
}

模型绑定在mvc中的names属性的帮助下进行

在您的情况下,控件的名称为BuildingList:

因此,在控制器上,操作如下:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(FormCollection collection)
{
   var selectedValue = collection["BuildingList"];
}

列表在我的视图中已正确填充。。出于某种原因,它在HttpPost创建方法处显示空值。。我正在创建具有建筑值的新房间实体。。谢谢你的回复,先生。对不起,我离开了一分钟。。你的想法对我的问题产生了一些影响。。再次感谢…列表在我的视图中填充正确。。出于某种原因,它在HttpPost创建方法处显示空值。。我正在创建具有建筑值的新房间实体。。谢谢你的回复,先生。对不起,我离开了一分钟。。你的想法对我的问题产生了一些影响。。再次感谢。。。。