我有IEnumerable<SelectListItem>
我的ViewModel
public class StatusClass
{
public string Status { get; set; }
public IEnumerable<SelectListItem> StatusList { get; set; }
}
我从控制器中将值设置为StatusList
。
StatusClass statusObj = new CRM.StatusClass();
List<SelectListItem> Discountdata = new List<SelectListItem>();
Discountdata.Add(new SelectListItem() { Value = "All", Text = "All" });
Discountdata.Add(new SelectListItem() { Value = "Draft", Text = "Draft" });
Discountdata.Add(new SelectListItem() { Value = "Issued", Text = "Issued" });
Discountdata.Add(new SelectListItem() { Value = "Partial", Text = "Partially Received" });
Discountdata.Add(new SelectListItem() { Value = "Received", Text = "Received" });
Discountdata.Add(new SelectListItem() { Value = "PAID", Text = "Paid" });
Discountdata.Add(new SelectListItem() { Value = "Billed", Text = "Billed" });
statusObj.StatusList = new SelectList(Discountdata, "Value", "Text");
这很好用,我的HTML是这样的:
@Html.DropDownListFor(model => model.Status, Model.StatusList)
我想要的是,我需要在创建列表时从控制器设置所选值。
假设我有一个这样的字符串:
string newwStatus = "Issued";
如何在SelectListItem
。
我尝试了这个,但它不适合我的情况:
foreach(var item in StatusList)
{
if(item.value == status)
{
item.Selected = true;
}
}
并尝试这个:
IEnumerable<SelectListItem> selectList =
from s in StatusList
select new SelectListItem
{
Selected = (s.Value == status),
Text = s.Text,
Value = s.Value
};
如果有人知道怎么做,我不知道这些是否正确,请帮助。
提前致谢。
答案 0 :(得分:0)
绑定到模型属性时,将忽略Selected
的{{1}}属性。在将模型传递给视图之前,需要在GET方法中设置SelectListItem
属性的值
Status
将选择List<SelectListItem> Discountdata = new List<SelectListItem>
{
new SelectListItem() { Value = "All", Text = "All" },
new SelectListItem() { Value = "Draft", Text = "Draft" },
new SelectListItem() { Value = "Issued", Text = "Issued" },
....
};
StatusClass model = new CRM.StatusClass
{
StatusList = Discountdata,
Status = "Issued"
};
return View(model);
元素中的第二个选项。
请注意,<select>
已经Discountdata
,使用IEnumerable<SelectListItem>
创建相同的new SelectList(Discountdata, "Value", "Text")
是不必要的额外开销。
另请注意,由于IEnumerable<SelectListItem>
属性和显示文字的值相同,因此您只需使用
value
并在模型构造函数中
List<string> Discountdata = new List<string>{ "All", "Draft", "Issued", ... };
答案 1 :(得分:0)
您将<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
属性绑定到下拉列表。因此,可以从数据库中设置值,或者在您的情况下,设置默认值“Issued”,如下所示:
Status