私は EntityFramework をデータアクセスとして使用して、asp.net mvc Web アプリケーションでエンドユーザーに国の DropDownList を表示しています。
これを達成するのは難しいことではありませんが、見栄えの良い方法を見つけるのに少し苦労しています.
しかし、まず最初にいくつかのコード:
<td>
@Html.DropDownListFor(x => x.ParentId, repos.GetParents(@Model.ParentId)
</td>
実際のコードの奥深く:
class dummy
{
public string Text { get; set; }
public int Value { get; set; }
}
private SelectList _parents;
public SelectList Parents
{
get
{
if (_parents == null)
{
var parents = Entities.Instance.Partners.Select(x => new dummy() { Text = x.Name, Value = x.Id }).OrderBy(x => x.Text).ToList();
parents.Insert(0, new dummy());
_parents = new SelectList(parents, "Value", "Text");
}
return _parents;
}
}
public SelectList GetParents(int? parentId)
{
if (parentId != 0 && parentId.HasValue)
{
//setSelected
}
return Parents;
}
ご覧のとおり、データをコピーするためだけに* * ダミー クラスを作成しました。なんで?x.Id.ToString
または同等のメソッドがエンティティへのlinqで機能しないため...
それでも、SqlFunctions.Tostring((double)x.ID)
これは完璧な解決策ではありませんが、十分な解決策のようなものがあります。少なくとも私が見るまでは、ID 4 がstring
「*lotsofspaces*4」のようになり、各値をトリミングすることは、私にとって良い解決策とは思えませんでした。
最も美しいコード ソリューションは次のとおりです。
new SelectList(Entities.Instance.Partners, "Id", "Name");
美しいですね。:) いいえ、ちがいます!ID 列と名前列だけでなく、パートナーからのデータ全体を選択するためです。
私の質問: 私の valueField がint
valuetypeであるときに、ドロップダウンで EntityFrame から My Data を取得するためのクリーンで見栄えの良い方法を教えてください。