1

我想我在这里遗漏了一些东西。我有一个 ASP.NET MVC 4 应用程序。在我看来,我有一个与我的模型相关联的下拉列表。直截了当的东西。

@Html.DropDownListFor(x => x.GaragingAddress.State, 
                      POSBridge.Helpers.StateAbbreviations(), 
                      new {id="ADStreetState"})

我引用的辅助函数在这里(它不是最有效的,但现在我专注于功能证明而不是性能。)

namespace POSBridge
{
    public class Helpers
    {
        public static List<SelectListItem> StateAbbreviations(bool includeTerritories = false)
        {
            List<string> abbreviations = new List<string>
            {
                "",
                "AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD",
                "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD",
                "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY"
            };
            if (includeTerritories)
            {
                abbreviations.AddRange(new string[] { "AS", "GU", "MP", "PR", "VI", "UM" });
            }

            List<SelectListItem> items = new List<SelectListItem>();
            foreach (string s in abbreviations) items.Add(new SelectListItem { Text = s, Value = s });
            return items;
        }
    }
}

呈现页面时,未填充具有状态的选择列表。所有状态值都显示在下拉列表中。页面上的其他下拉列表被正确填充,当我在此处放置断点并检查即时窗口中的模型值时,Model.GarageAddress.State 属性肯定有一个值。因此,我确信它可能与我编写的 Helper 函数有关,但我不确定是什么/如何。

TIA

4

1 回答 1

0

好的,这很奇怪且出乎意料,但以下代码有效。

@Html.DropDownListFor(x => x.GaragingAddress, 
    new SelectList(POSBridge.Helpers.StateAbbreviations(), 
                   "Value",
                   "Text", 
                   Model.GaragingAddress.State), 
    new { id="ADStreetState" })

我不知道为什么这行得通,而另一个行不通,但是如果某些事情正常,我该向谁抱怨?

于 2012-12-29T01:12:39.303 回答