modelIdとcategoryIdの2つの外部キーを持つdropdownListを使用しようとしています。 そして、私はselectListと共にViewBagを使用しています。ViewBag複数のSelectListのドロップダウンリスト
public ActionResult Create()
{
ViewBag.categoryId = new SelectList(db.Category, "categoryId", "name");
ViewBag.modelId = new SelectList(db.Model, "modelId", "name");
return View();
}
//
// POST: /Product/Create
[HttpPost]
public ActionResult Create(Product product)
{
if (ModelState.IsValid)
{
db.Product.Add(product);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.categoryId = new SelectList(db.Category, "categoryId", "name", product.categoryId);
ViewBag.modelId = new SelectList(db.Model, "modelId", "name", product.modelId);
return View(product);
}
ここに私のCreate.cshtmlがあります。
<div class="editor-label">
@Html.LabelFor(model => model.Category)
</div>
<div class="editor-field">
@Html.DropDownList("categoryId", "--Select--")
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Model)
</div>
<div class="editor-field">
@Html.DropDownList("modelId", "--Select--")
</div>
私は送信ボタンを押すと、 問題は何か「を同じキーを持つ項目が既に追加されている」、エラーが出てきますか?モデルに問題はありますか?
私のモデルです。
--Prodruct.cs--
public class Product
{
[Key] public int productId { get; set; }
[Required(ErrorMessage = "Please select category")]
public int categoryId { get; set; }
[Required(ErrorMessage = "Please select model")]
public int modelId { get; set; }
[DisplayName("Model name")]
public String model { get; set; }
public virtual Category Category { get; set; }
public virtual Model Model { get; set; }
}
--Category.cs--
public class Category
{
[Key] public int categoryId { get; set; }
public String name { get; set; }
}
--Model.cs--
public class Model
{
[Key] public int modelId { get; set; }
public String name { get; set; }
}
--RentalDB.cs--
public class rentalDB : DbContext
{
public DbSet<Product> Product { get; set; }
public DbSet<Model> Model { get; set; }
public DbSet<Customer> Customer { get; set; }
public DbSet<Order> Order { get; set; }
public DbSet<Cart> Cart { get; set; }
public DbSet<Category> Category { get; set; }
public DbSet<OrderDetails> OrderDetails { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
どこが間違っていますか? CreateのIndexページでカテゴリデータとモデルデータを取得できます。しかし、私がそれを提出すると、 '同じキーを持つアイテムが既に追加されています'というエラーが表示されます。 どこに問題があるのか教えてください。 ありがとうございます。
- コーディングがさらに追加されました。
私はこのLINQを使用しています。おそらくここに問題があるでしょう。
ここに「モデル」エンティティを追加するにはどうすればよいですか?これは私がそれを行っているだろうかある
var product = from a in db.Product.Include(a => a.Category)
select a;
どうすればよいのか詳細な回答が追加されました。 –