如何使下拉列表在asp.net mvc中显示选定的值?
我有在它Html.DropDownList编辑页面....我不能显示下拉列表值总是显示了Select
,而不是我想要的下拉显示项目基于模型值说Model.Mes_Id
的选择。 ..任何建议,如何可以做到...如何使下拉列表在asp.net mvc中显示选定的值?
<p>
<label for="MeasurementTypeId">MeasurementType:</label>
<%= Html.DropDownList("MeasurementType", // what should i give here?)%>
<%= Html.ValidationMessage("MeasurementTypeId", "*") %>
</p>
编辑:它的列表项,但我想显示编辑视图中选择一个值...
public ActionResult Edit(int id)
{
var mesurementTypes = consRepository.FindAllMeasurements();
ViewData["MeasurementType"] = mesurementTypes;
var material = consRepository.GetMaterial(id);
return View("Edit", material);
}
我的存储库方法,
public IEnumerable<SelectListItem> FindAllMeasurements()
{
var mesurements = from mt in db.MeasurementTypes
select new SelectListItem
{
Value = mt.Id.ToString(),
Text= mt.Name
};
return mesurements;
}
在创建IEnumerable<SelectListItem>
设置选择项。
个人而言,我会为表单创建一个专门的视图模型,而是由你的代码去,这样做:
public ActionResult Edit(int id)
{
//Put this first
var material = consRepository.GetMaterial(id);
//pass in your selected item
var mesurementTypes = consRepository.FindAllMeasurements(material.MeasurementTypeId);
ViewData["MeasurementType"] = mesurementTypes;
return View("Edit", material);
}
然后改变你的资料库的方法是这样的:
public IEnumerable<SelectListItem> FindAllMeasurements(int selectedId)
{
var mesurements = from mt in db.MeasurementTypes
select new SelectListItem
{
Value = mt.Id.ToString(),
Text= mt.Name,
Selected = mt.Id == selectedId
};
return mesurements;
}
HTHS,
Charles
@Charlino奏效.. ......它的工作原理进行编辑,但如何将用于添加视图这种方法的行为在这里我不想选择的值... – 2010-05-04 05:37:07
如果你只是传递0无应选择的价值观 - 假设你没有MeasurementType ID为0!:-) – Charlino 2010-05-04 05:40:21
你刚刚做到了......干杯! – 2010-05-04 05:41:56
看一看这个博客条目。
基本上,你需要你的mesurementTypes
列表/枚举转换成SelectList
或IEnumerable<SelectListItem>
。
我会建议,如果可能的话,升级到ASP.NET MVC2和使用Html.DropDownListFor()
@alastair我用'的IEnumerable
你应该返回它可以指定所选项目的SelectionList。
@griegs任何建议如何可以做到... – 2010-05-04 05:18:15
假设Model.Mes_Id contais选择的值,你可以做这样的事情
<%
var Measurements = new SelectList((IEnumerable)ViewData["MeasurementType"], "Id", "Name", Model.Mes_Id);
Response.Write(Html.DropDownList("measurement_type", Measurements, "Select"));
%>
Html.DropDownListFor对我不起作用所以我得到了这样的罂粟
(in Edit method)
CreatList(long.Parse(wc.ParentID.ToString()));
private void CreatList(long selected= 0)
{
SqlConnection conn = new SqlConnection(Config.ConnectionStringSimple);
conn.Open();
Category wn = new Category(conn);
CategoryCollection coll = new CategoryCollection();
Category.FetchList(conn, ref coll);
ViewBag.ParentID = GetList(coll, selected);
}
private List<SelectListItem> GetList(CategoryCollection coll, long selected)
{
List<SelectListItem> st = new List<SelectListItem>();
foreach (var cat in coll)
{
st.Add(new SelectListItem
{
Text = cat.Name,
Value = cat.ID.ToString(),
Selected = cat.ID == selected
});
}
SelectListItem s = new SelectListItem {
Text = Resources.lblSelect,
Value = "0"
};
st.Insert(0, s);
return st;
}
<div class="editor-label">
@Html.LabelFor(model => model.ParentID)
</div>
<div class="editor-field">
@Html.DropDownList("ddlCat", (List<SelectListItem>)ViewBag.ParentID)
@Html.ValidationMessageFor(model => model.ParentID)
</div>
更多细节请。您发布的代码完全符合它的要求。用一个选项创建一个
@约翰考虑我的下拉列表中包含9项....'Model.Mes_Id = 5',我想在我的编辑视图中选择与价值'5' MeasurementType 通过'http://本地主机:1985 /材料/编辑/ 13 '.. – 2010-05-04 04:47:41