好的,首先,我是ASP.NET MVC的新手。现在我想在C#Razor视图中添加一个下拉列表。 问题是,无论如何直接将List()分配给@ Html.DropDownListFor ......? MyClass像这样
public class MyClass
{
public int ID {get; set;}
public string Itemstring {get; set;}
}
ViewModel就像这样
public class MyViewModel
{
public int ID { get; set; }
public List<MyClass> MyClassList {get; set; }
}
控制器动作方法就像这样
public ActionResult Home()
{
MyViewModel mvm = new MyViewModel () {
new MyClass() { ID=1, Itemstring="My Item1" },
new MyClass() { ID=2, Itemstring="My Item2" },
new MyClass() { ID=3, Itemstring="My Item3" }
}
}
视图:这是我不确定如何使用
@model xyzNameSpace.Models.MyViewModel
<div>
@Html.DropDownListFor(x => x.ID, Model.MyClassList);
<a href="@Url.Action("Selected")><img src="../../Content/images/selected.gif" alt="Proceed" /> </a>
</div>
- 因此,当用户从下拉列表中选择一个项目并单击图像时,它应该调用(或调用不确定使用哪个单词)控件中的“已选择”操作,它应该将模型与选定值绑定,可能会有一些一个人帮我怎么做......?
谢谢 Siri的。
答案 0 :(得分:5)
Html.DropDownListFor有6个重载,所有这些重载都将IEnumerable<SelectListItem>
作为保存值的参数。你不能为自己的类使用自己的类,这就是你在Kyle尝试解决时遇到错误的原因。
将此添加到您的模型中:
public List<SelectListItem> ListToUse { get; set; }
控制器:
MyViewModel model = new MyViewModel();
model.MyClassList = new List<MyClass>
{
new MyClass() { ID=1, Itemstring="My Item1" },
new MyClass() { ID=2, Itemstring="My Item2" },
new MyClass() { ID=3, Itemstring="My Item3" }
}
model.ListToUse = model.MyClassList
.Select(x => new SelectListItem{ Value = x.ID, Text = x.Itemstring })
.ToList();
在视图中:
@Html.DropDownListFor(x => x.ID, Model.ListToUse);
我没有测试此代码。
答案 1 :(得分:1)
如果我理解正确,您希望在单击“继续”按钮时将下拉列表中的所选项目发布到服务器?
您需要使用表单来执行此操作:
@model xyzNameSpace.Models.MyViewModel
@using(Html.BeginForm())
{
<div>
@Html.DropDownListFor(x => x.ID, Model.MyClassList);
<input type="submit" value="Proceed" />
</div>
}
答案 2 :(得分:1)
在模型中
public class modelname
{
public selectlist getdropdown()
{
IEnumerable<SelectListItem> EntityList = edmx.tblEntities.AsEnumerable().Select(a => new SelectListItem { Text = a.name, Value = a.id.ToString() }).ToList();
return new SelectList(EntityList, "Value", "Text");
}
}
在视图中
@Html.DropDownListFor(model => model.source_entity, Model.getdropdown(), "--Select--")
控制器中的
public ActionResult home()
{
return View(new modelname());
}