当我尝试检查时,所选值没有出现,下拉列表显示了所有名称,但是当我尝试在控制器中显示下拉列表的所选值时,选项没有显示。
控制器:
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();
}
}
}
}
答案 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) {
// ...
}
}