我绑定了MVC 3应用程序中的下拉列表。当我正在进行POST时,模型包含选中的属性下拉值" SelectedWidgetId" ( Id ),这很好。
但我也希望在另一个属性" SelectedWidgetText"中看到所选的Item TEXT。 (名称)?
搜索后,我找到一种方法来查找下拉列表中的选定项目文字,但它不是直接?寻找其他方式?推荐!
model.SelectedWidgetText = m.WidgetList.Where(e => e.Value == m.SelectedWidgetId.ToString()).FirstOrDefault().Text;
这是所有代码,
模型
public class Widget
{
public int Id { get; set; }
public string Name { get; set; }
}
public class WidgetModel
{
private Widget[] Widgets
{
get
{
return new Widget[] {
new Widget { Id=1, Name="Item 1" },
new Widget { Id=2, Name="Item 2" },
new Widget { Id=3, Name="Item 3" }
};
}
}
public SelectList WidgetList
{
get
{
return new SelectList(Widgets.ToList(), "Id", "Name", SelectedWidgetId);
}
}
public int SelectedWidgetId { get; set; }
public string SelectedWidgetText { get; set; }
}
控制器
public ActionResult Index()
{
var model = new WidgetModel();
return View(model);
}
[HttpPost]
public ActionResult Index(WidgetModel model)
{
model.SelectedWidgetText = model.WidgetList.Where(e => e.Value == model.SelectedWidgetId.ToString()).FirstOrDefault().Text;
return View(model);
}
查看
@using (Html.BeginForm())
{
@Html.DropDownListFor(m => m.SelectedWidgetId, Model.WidgetList, "Select...");
<input type='submit' />
}
答案 0 :(得分:1)
为了满足您的要求,您必须这样做:
我正在使用模型类的public string SelectedWidgetText { get; set; }
属性。
使用一些jquery:
<script>
$("#SelectedWidgetId").on("change", function {
$("#SelectedWidgetText").val($(this).text());
});
</script>
[HttpPost]
public ActionResult Index(WidgetModel model,string SelectedWidgetText)
{
// do something with SelectedWidgetText value
}