MVC 3では、次のようなEFコードのファーストクラスがあります:
public class Client
{
[Key]
[MaxLength(4)]
[Display(Name="labClientID", ResourceType=typeof(Resources.Translations.Client))]
public string ClientID { get; set; }
[MaxLength(50)]
[Display(Name="labName", ResourceType=typeof(Resources.Translations.Client))]
public string Name { get; set;}
}
クライアントは、たとえば次の Person クラスで使用されます。
public class Person
{
[Key]
[MaxLength(50)]
public string UserID { get; set; }
[MaxLength(50)]
public string LastName { get; set; }
[UIHint("ForeignKey")]
[MaxLength(4)]
public string ClientID { get; set; }
public virtual Client Client { get; set; }
}
クライアントには 01、02、03 などの ID があります
編集ビューには、編集者ビューの次の剃刀ステートメントがあります。
@Html.DropDownListFor(m => m.ClientID , new SelectList(ViewBag.Clients, "ClientID", "Name"))
ViewBag.Clients は、前に次のように構築されます。
ViewBag.Clients = (from x in Context.Client select new {x.ClientID, x.Name});
ここで奇妙な部分があります。person クラスの ClientID に選択した値に関係なく、DropDownListFor ステートメントを含む編集ビューを開くと、DropDownList は常にクライアント テーブルの 2 番目のエントリを表示します。
クライアントのビューバッグをデバッグしましたが、正しい値が含まれています。また、DropDownListFor の代わりに editorfor を使用し、person エンティティの clientid に正しい値が含まれています。
どこに問題があるか分かりますか?