我想显示下拉列表的选定值

时间:2018-12-04 09:05:06

标签: asp.net-mvc

当我尝试检查时,所选值没有出现,下拉列表显示了所有名称,但是当我尝试在控制器中显示下拉列表的所选值时,选项没有显示。

控制器:

null

模型类:

public ActionResult Index1()
{
    Class1 cs1 = new Class1();

    return View(cs1);
}

[HttpPost]
public ActionResult Index1(Class1 cs)
{
    var selecteditem = cs.psudetail.Find(p => p.Section_PSU == cs.psudetail.ToString());
    if (selecteditem != null)
    {

    }
}

以及具有模型的视图:

namespace WebApplication1.Models
{
    public class Class1
    {
        public List<PSUMaster> psudetail
        {
            get
            {
                PSUEntities pe = new PSUEntities();
                return pe.PSUMasters.ToList();
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您需要具有一个属性,该属性可以“存储”您在列表中所做的选择。扩展视图模型(Class1)以包括属性SelectedPSU。我猜S_no中的PSUMaster是ID,并且是整数。否则,请相应地调整代码!

我也将列表更改为仅列表,然后控制器可以担心填充它。这种模式更适合MVC(保持模型简单)。

更新的课程:

namespace WebApplication1.Models
{
    public class PsuViewModel
    {
        public int SelectedPSU { get; set; }

        public List<PSUMaster> PSU { get; set; }
    }
}

接下来,必须更新控制器以通过GET Index方法将列表传递给视图模型:

public ActionResult Index1()
{
    var pe = new PSUEntities();

    return View(new PsuViewModel {
        PSU = pe.PSUMasters.ToList()
    });
}

现在,我们可以在视图中使用SelectedPSU属性:

@model WebApplication1.Models.Class1
@{ 
    ViewBag.Title = "Index1";
}
<br />
@Html.DropDownListFor(m => m.SelectedPSU, new SelectList(Model.PSU, "S_no", "Section_PSU"), "--Select PSU--")

...我们可以在控制器中获取ID:

[HttpPost]
public ActionResult Index1(PsuViewModel model)
{
    var pe = new PSUEntities();
    var selectedPsu = pe.PSUMasters.FirstOrDefault(p => p.S_no == model.SelectedPSU);

    if (selectedPsu != null) {
        // ...
    }
}