C# MVC 3 DropDownList在编辑页面上显示多个值
我正在使用枚举填充我的DropDownList,它可以很好地处理列表和创建视图,但我的编辑视图在DropDownList中加载重复的值。重复值仅为属性的选定值,即,如果已租用是保存在DB中的值,则下拉列表将显示已租用的选定值、可用值和列表中的另一个已租用值。我需要知道的是如何加载DropDownList,它为PropertyStatus枚举选择以前存储在DB中的值,而不使用任何重复项 控制器:C# MVC 3 DropDownList在编辑页面上显示多个值,c#,asp.net-mvc,razor,html-select,C#,Asp.net Mvc,Razor,Html Select,我正在使用枚举填充我的DropDownList,它可以很好地处理列表和创建视图,但我的编辑视图在DropDownList中加载重复的值。重复值仅为属性的选定值,即,如果已租用是保存在DB中的值,则下拉列表将显示已租用的选定值、可用值和列表中的另一个已租用值。我需要知道的是如何加载DropDownList,它为PropertyStatus枚举选择以前存储在DB中的值,而不使用任何重复项 控制器: public ActionResult Edit(int id) {
public ActionResult Edit(int id)
{
Property property = db.Properties.Find(id);
ViewBag.PropertyStatus = SetViewBagPropertyStatus();
return View(property);
}
private IEnumerable<SelectListItem> SetViewBagPropertyStatus()
{
IEnumerable<ePropStatus> values =
Enum.GetValues(typeof(ePropStatus)).Cast<ePropStatus>();
IEnumerable<SelectListItem> items =
from value in values
select new SelectListItem
{
Text = value.ToString(),
Value = value.ToString()
};
return items;
}
编辑视图:
@Html.DropDownList("PropertyStatus", Model.PropertyStatus.ToString())
请尝试以下方法:
@Html.DropDownListFor(model => model.PropertyStatus, ViewBag.PropertyStatus)
编辑::交替尝试以下操作
控制器:
public ActionResult Edit(int id)
{
Property property = db.Properties.Find(id);
ViewBag.PropertyStatusList = SetViewBagPropertyStatus(property.PropertyStatus);
return View(property);
}
private IEnumerable<SelectListItem> SetViewBagPropertyStatus(string selectedValue = "")
{
IEnumerable<ePropStatus> values =
Enum.GetValues(typeof(ePropStatus)).Cast<ePropStatus>();
IEnumerable<SelectListItem> items =
from value in values
select new SelectListItem
{
Text = value.ToString(),
Value = value.ToString(),
Selected = (selectedValue == value.ToString())
};
return items;
}
@Html.DropDownList("PropertyStatus", ViewBag.PropertyStatusList)
尝试在控制器中使用此选项:
returnitems.Distinct()代码>添加Distinct无效。我仍然在下拉列表中获得重复的选择文本值。不幸的是,这不起作用,我正在获取模型。属性没有适用的方法DropDownListFor,但似乎有一个同名的扩展方法。扩展方法无法动态调度。我已经尝试使用@Html.DropDownList(“PropertyStatus”,ViewBag.PropertyStatusList),但它仍然返回相同的异常。现在我们使用的是“DropDownList”而不是“DropDownListFor”那么,这种异常是如何发生的呢?我不知道为什么它会返回这行代码@Html.DropDownList(“PropertyStatus”,ViewBag.PropertyStatusList)的相同异常。我尝试了上面发布的另一个示例,我仍然得到这个异常:编译器错误消息:CS1973:'System.Web.Mvc.HtmlHelper'没有名为'DropDownListFor'的适用方法,但似乎有一个同名的扩展方法。无法动态调度扩展方法。考虑在不使用扩展方法语法的情况下强制转换动态参数或调用扩展方法。
@Html.DropDownList("PropertyStatus", ViewBag.PropertyStatusList)