1

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 に正しい値が含まれています。

どこに問題があるか分かりますか?

4

0 に答える 0