ASP.NET MVC无法获取下拉列表来设置所选值

时间:2015-10-12 12:44:44

标签: asp.net-mvc-4 drop-down-menu

在我的ASP.NET MVC应用程序中,我在页面上的表单中有一个下拉列表,其中在页面加载时应该选择的下拉列表项目应该被选中。

页面的ViewModel具有SelectListItems列表的属性,该列表应该用于填充下拉列表:

参见下面的视图模型和"索引" class,将HeaderItemID作为其中一个属性:

public class IndexItemResult
{
    public Index FocalIndex { get; set; }
    public string FocalIndexHeaderItemText { get; set; }
    public List<Item> IndexItems { get; set; }
    public List<SelectListItem> ItemSelectList { get; set; }
    public List<Item> ItemList { get; set; }

    public IndexItemResult() { }
}

public class Index
{
    public int IndexID { get; set; }
    public string IndexName { get; set; }
    public int IndexHeaderItemID { get; set; }
}

我设置&#34;文字&#34;,&#34;值&#34;和&#34;选择&#34;来自我的控制器中的数据库LINQ查询的SelectListItems中的项的属性。此方法还设置了&#34; FocalIndex&#34; ViewModel的属性。由于HeaderItemID是FocalIndex的一个属性,因此我假设&#34; HeaderItemID&#34;可以作为可以绑定的字段使用。

&#34; HeaderItemID&#34;是应该选择的项目。当我查看生成的SelectListItems列表时,一切看起来都没问题 - &#34; text&#34;和&#34;价值&#34;属性都很好,正确的项目被指定为&#34;选择&#34;。

private IndexItemResult GetIndexItemResult(int? indexID)
{
    IndexItemResult indexItemResult = new IndexItemResult();
    Index focalIndex = db.Indexes.Find(indexID);
    indexItemResult.FocalIndex = focalIndex;

    int HeaderItemID = focalIndex.IndexHeaderItemID;

    indexItemResult.ItemSelectList = db.ItemTexts.
        Where(it => it.LanguageID == 1).
        Select(iText =>
            new SelectListItem
            {
                Selected =
                (
                    iText.ItemID == HeaderItemID ? true : false
                ),
                Value = iText.ItemID.ToString(),
                Text = String.Concat(iText.ID.ToString(), " ", iText.Text)
            }).ToList();

    return indexItemResult;
}

然后我在页面上有一个表单,在那里我用@Html.DropDownList帮助器指定下拉列表。我从第二个参数中的ViewModel传递SelectListItems列表。

@Html.DropDownList("IndexHeaderItemID", Model.ItemSelectList,
  htmlAttributes: new { @class = "form-control", @id = "HeaderItemDDL" })

下拉列表按预期呈现所有项目,但是应该设置为&#34;选择&#34;未被选中。而是选择第一个项目。 对于我在这里缺少的内容有任何建议吗?

1 个答案:

答案 0 :(得分:1)

我看不到你在import java.util.*; public class EvenOdd{ private static int[] array; private static List<Integer> even = new ArrayList<>(); private static List<Integer> odd = new ArrayList<>(); Scanner sc = new Scanner(); int numbers = sc.nextInt(); public static void classify() { for(int i = 0 ; i < array.length ; i++){ if(numbers==-1){ if(array[i] % 2 == 0) even.add(array[i]); else odd.add(array[i]); } } } public static void display(List<Integer> list){ for(Integer i : list) System.out.println(i); } public static void main(String[] args){ classify(); display(even); } } ModelState中实际设置任何内容的地方。由于这是您要绑定的名称,因此必须将IndexHeaderItemIDRequest["IndexHeaderItemID"]ViewData["IndexHeaderItemID"]ViewBag.IndexHeaderItemID中的一个设置为您希望选择的值。< / p>