Asp.net mvc 3 DropDownListFor不';不显示所选项目
我试图让下拉列表在有项目时选择我的项目,但它从来没有这样做。我在谷歌上搜索了这个,并尝试了许多不同的方法,但它们似乎都使用了包含列表的ViewModel,而不是ViewBag,但如果可能的话,我想继续使用ViewBag 我的控制器:Asp.net mvc 3 DropDownListFor不';不显示所选项目,asp.net-mvc-3,razor,html.dropdownlistfor,Asp.net Mvc 3,Razor,Html.dropdownlistfor,我试图让下拉列表在有项目时选择我的项目,但它从来没有这样做。我在谷歌上搜索了这个,并尝试了许多不同的方法,但它们似乎都使用了包含列表的ViewModel,而不是ViewBag,但如果可能的话,我想继续使用ViewBag 我的控制器: [HttpGet] public ActionResult Index(int? id) { ViewBag.SelectList = new SelectList(rep.GetItemList(), "id", "type
[HttpGet]
public ActionResult Index(int? id)
{
ViewBag.SelectList = new SelectList(rep.GetItemList(), "id", "type");
if (id.HasValue)
{
var model = rep.GetItemByID(id.Value);
if ( model != null )
{
return View(model);
}
}
return View();
}
我的看法是:
<div class="editor-field">
@Html.DropDownListFor(model => model.itemID, (SelectList)ViewBag.SelectList)
@Html.ValidationMessageFor(model => model.itemID)
</div>
@Html.DropDownListFor(model=>model.itemID,(SelectList)ViewBag.SelectList)
@Html.ValidationMessageFor(model=>model.itemID)
这没有在DropDownList中选择我的项目,我还尝试在ViewBag中创建一个列表,然后在视图中构建SelectList,一些帖子说这应该可以解决问题:
<div class="editor-field">
@Html.DropDownListFor(model => model.itemID, new SelectList(ViewBag.SelectList, "id", "type", Model.itemID))
@Html.ValidationMessageFor(model => model.itemID)
</div>
@DropDownListFor(model=>model.itemID,新的SelectList(ViewBag.SelectList,“id”,“type”,model.itemID))
@Html.ValidationMessageFor(model=>model.itemID)
但这一切似乎都不起作用。所以我想知道是否有人能够发现我做错了什么?确保在传递给视图的模型中设置了
itemID
属性
if (id.HasValue)
{
var model = rep.GetItemByID(id.Value);
model.itemID=id.Value;
return View(model);
}
我会尝试从一开始就设置所选的值,因为SelectList是不可变的
[HttpGet]
public ActionResult Index(int? id)
{
if (id.HasValue)
{
ViewBag.SelectList = new SelectList(rep.GetItemList(), "id", "type", id );
var model = rep.GetItemByID(id.Value);
if ( model != null )
{
return View(model);
}
}
else
{
ViewBag.SelectList = new SelectList(rep.GetItemList(), "id", "type");
}
return View();
}
在您看来,可以这样使用它:
@Html.DropDownListFor(model => model.itemID, (SelectList)ViewBag.SelectList, "Please select...")
当我从rep.GetItemByID(id.Value)获取模型时;始终设置itemID。但另一方面,这确实向我指出,我需要确保用于该项目的id返回一个项目。我的问题还没有解决。