根据选定的下拉列表值重新生成数据

时间:2016-07-05 19:09:39

标签: asp.net asp.net-mvc-5

我想根据我视图中两个DropDownList给出的输入显示数据。最好的方法是什么?如何将DropDownList值传递给控制器​​?

这是我的控制器

  // GET: Define
        public ActionResult Index()
        {
            IEnumerable<SelectListItem> Rooms = db.RM_ROOM.Select(c => new SelectListItem
            {
                Value = c.NAME,
                Text = c.NAME

            });
            ViewBag.NAME = Rooms;

            IEnumerable<SelectListItem> item = db.RM_ENTITY_TYPE.Select(c => new SelectListItem
            {
                Value = c.ENTITY_NAME,
                Text = c.ENTITY_NAME

            });
            ViewBag.ENTITY_NAME = item;
            //var rooms = db.RM_ROOM.ToList();

            return View();       
        }

这是我的索引

@using WebApplication1.Models;

@{
    ViewBag.Title = "Index";
}
<div class="container">
    <div class="row">
        <div class="col-sm-1">
            Room
            @Html.DropDownList("NAME", "")
        </div>
    </div>
    <div class="row">
        <div class="col-sm-2">
            Entity
            @Html.DropDownList("ENTITY_NAME", "")
        </div>
    </div>
</div>

我的视图模型是

public class DefineViewModelcs
{
    public IEnumerable<SelectListItem> Rooms { get; set; }

    public int ROOMID { get; set; }
    public string NAME { get; set; }
    public IEnumerable<SelectListItem> Entities { get; set; }
    public int ENTITY_TYPEID { get; set; }
    public string ENTITY_NAME { get; set; }
    public int APPROVED_ROOM_STATEID { get; set; }
    public bool Selected { get; set; }
}

1 个答案:

答案 0 :(得分:0)

您需要做的第一件事就是将您的价值从您的视图转移到您的控制器。

你可以使用Eventlistener来检测你的下拉菜单中的变化,通过将你的下拉菜单包装在一个表单中来调用你的控制权。

    @using(Html.BeginForm("ActionName","ControllerName"))
    {
        @Html.DropDownList("IdOfDropDown",
                           "YourListToDisplayInsideTheMenu", 
                           new { onchange = “$(this.form).submit();”}
    }

您的控制器需要接受输入参数。 然后,您需要使用这些值来过滤数据库中的搜索

您需要做的最后一件事是将搜索结果返回到您的视图。

public ActionResult Filter(int id)
        {
          //Do your search here and return a list to the view, example:
          Room room = db.RM_ROOM.Find(r => r.ROOMID == id)

          return View(room);

          //this will return a single room from your database
        }

我不是100%确定您的模型如何协同工作以及如何定义它们,但我希望这有助于您找到解决问题的理想解决方案。