1

ユーザープロファイルプレフィックスの次のコードがあります。

@Html.DropDownListFor(model => model.UserProfile.Profile.Prefix.ID, Model.PrefixList.Select(x => new SelectListItem { Text = x.Name, Value = x.ID.Value.ToString()}).ToList() })

これは、名前にプレフィックスが含まれている場合に効果的です。しかし、誰もがそうするわけではありません。

データベースは、次のようなIEnumerableリストを介して選択されたプレフィックスを取り込みます。

public class ProfileViewModel
    {
        public User UserProfile { get; set; }
        public IEnumerable<USStates> States { get; set; }
        public IEnumerable<Campus> CampusLocations { get; set; }
        public IEnumerable<Prefix> PrefixList { get; set; }
        public IEnumerable<Suffix> SuffixList { get; set; }
        public IEnumerable<MaritalStatus> MaritalStatusList { get; set; }
    }

事前に選択されたリストの機能を破壊せずにデフォルト値を設定するにはどうすればよいですか?

4

3 に答える 3

2

オーバーロードを使用する必要があります:SelectList Constructor (IEnumerable, String, String, Object)

あなたの場合、それは次のようになります。

@Html.DropDownListFor(model => model.UserProfile.Profile.Prefix.ID, Model.PrefixList.Select(x => new SelectListItem { Text = x.Name, Value = x.ID.Value.ToString()}).ToList(), "-default value-" })

于 2012-09-26T21:07:12.610 に答える
0

ドロップダウンリストを次のようにバインドすると思います

@Html.DropDownListFor(x => x.CountryId, new SelectList(Model.Countries, "ID", "Name"), "-Select Country-", new { @id = "ddlcountry" })

私はこれがあなたを助けると思います。

于 2012-09-26T18:34:35.037 に答える
0

このオーバーロードを使用します。

public SelectList(IEnumerable items, string dataValueField, string dataTextField, object selectedValue);

最後のパラメータは選択された値です。次のようにメソッドを書き直すことができます。

@Html.DropDownListFor(model => model.UserProfile.Profile.Prefix.ID, Model.PrefixList.Select(x => new SelectListItem { Text = x.Name, Value = x.ID.Value.ToString()}).ToList(), "--- Default Value---" })

この法案がお役に立てば幸いです。

于 2012-09-26T19:22:35.277 に答える