Ich versuche DropDropList mit zwei Fremdschlüssel, die ModelId und CategoryId sind, zu verwenden. Und ich benutze ViewBag mit selectList.ViewBag mehrere SelectList für Dropdown-Liste
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);
}
Und hier ist meine 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>
Wenn ich Taste einreichen, Fehler kommen, ‚Ein Element mit dem gleichen Schlüssel bereits hinzugefügt wurde‘ Was Problem ist? Ist es ein Problem mit Model?
Hier sind meine Modelle.
--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>();
}
}
Wo ist es falsch? Die Indexseite in Create kann Kategorendaten und Modelldaten abrufen. Wenn ich es jedoch übermittele, hat es einen Fehler: "Ein Element mit demselben Schlüssel wurde bereits hinzugefügt". Können Sie mir helfen, wo das Problem ist? Danke.
--added mehr coding--
ich diese LINQ verwenden. Wahrscheinlich hat hier ein Problem.
Wie kann ich 'Model' Entity hier hinzufügen?
var product = from a in db.Product.Include(a => a.Category)
select a;
Ich fügte eine detaillierte Antwort, wie es gemacht werden könnte. –