1

アイテムを編集しているときにAnimal、「ID」のフィールドにフィールド「idAnimal」の値が入力されているのがわかります。動物モデルは、パラメーターとして渡されたIDによってデータベースから(EFを使用して)取得されます。「id」という名前のパラメーターは、データベース内の「idAnimal」という名前のキーです。

コントローラでデバッグすると、モデルの値はOK(ID = null、idAnimal = some int)になります... Razorビューでデバッグすると、using@Model.IDもnullであることがわかります...しかし、ビューがレンダリングされると、テキストボックスの値。

私のモデルは次のとおりです。

public class Animal
{
   public int idAnimal {get; set;}  //this is the id in database
   public int ID {get; set;}       //this is the id given at birth to the animal, a business concept 

   //The rest of the properties
}

私のコントローラーの編集アクションでは、次のようになります。

public virtual ActionResult Edit(int id)
{
     Animal myA = db.Animals.Find(id);
     return PartialView(myA)
} 

私が持っているビューでは:

@model MyApp.Model.Animal
    ....

    @Html.LabelForX(model => model.ID)
    <div class="input">
       @Html.TextBoxFor(model => model.ID, new { @class = "medium", size = 30 })
       @Html.ValidationMessageFor(model => model.ID)
    </div>

     ....

奇妙なことに、発生する可能性がある唯一のことは、「id」という名前のパラメーター(「idAnimal」フィールドの値を保持する)が何らかの形で干渉している可能性があることです。

これがすべてのIDのスープが理解できることを願っています:)

4

1 に答える 1

1

IDプロパティをTagなどの他の何かに変更してみてください。model.IDが列IDではなくモデルから主キーをプルするバグがあると思われます。

于 2012-12-15T15:47:51.510 に答える