Ich habe dieses Ding bei meiner Anwendung ausgeführt. Ich habe 3 Tabellen, 1 Haupttabelle und 2 andere Tabellen, die benötigt werden, um die Haupttabelle zu erstellen, die Haupttabelle hängt von den 2 Tabellen ab, sie sind mit Einschränkungen verbunden. Ich habe die Haupttabelle: Word Dann habe ich die beiden anderen Tabellen: Schwierigkeiten und Kategorie. Ich habe den Schwierigkeitsgrad: Einfach erstellt und dann habe ich die Kategorie: Natur erschaffen. So, jetzt wäre ich in der Lage, so viele Wörter wie möglich mit diesen beiden Attributen zu erstellen, aber es gibt mir einen Fehler. Ich kann nur ein Wort erstellen, wenn ich auf diese Weise erstellenASP.Net MVC Erstellen eines Register Bug
Dificulty -> Category -> Word
oder
Category -> Difficulty -> Word
. Ich kann kein Wort ohne diesen Pfad erstellen und ich weiß nicht warum. Die Werte werden in einer Datenbank gespeichert, die in 2 ComboBoxen, 1 für die Schwierigkeit und der andere für Kategorie aufgerufen wird. Wenn ich ein Wort erstellen wollte, müsste ich eine neue Kategorie und eine neue Schwierigkeit erstellen, sonst wird es als null zurückgegeben.
Das ist mein Model View:
public partial class palavra
{
public int id_pal { get; set; }
public Nullable<int> LETRAS { get; set; }
public string PISTA { get; set; }
public int id_cat { get; set; }
public int id_dificuldade { get; set; }
public string nomepalavra { get; set; }
public virtual categoria categoria { get; set; }
public virtual dificuldade dificuldade { get; set; }
}
Das ist mein Controller ist:
public ActionResult Index()
{
var palavras = db.palavras.Include(p => p.categoria).Include(p => p.dificuldade);
return View(palavras.ToList());
}
// GET: palavras/Create
public ActionResult Create()
{
ViewBag.id_cat = new SelectList(db.categorias, "id_cat", "TIPO_CATEGORIA");
ViewBag.id_dificuldade = new SelectList(db.dificuldades, "id_dificuldade", "TIPO_DIFICULDADE");
return View();
}
// POST: palavras/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "id_pal,LETRAS,PISTA,id_cat,id_dificuldade,nomepalavra")] palavra palavra)
{
if (ModelState.IsValid)
{
db.palavras.Add(palavra);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.id_cat = new SelectList(db.categorias, "id_cat", "TIPO_CATEGORIA", palavra.id_cat);
ViewBag.id_dificuldade = new SelectList(db.dificuldades, "id_dificuldade", "TIPO_DIFICULDADE", palavra.id_dificuldade);
return View(palavra);
}
Das ist meine Ansicht ist:
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.nomepalavra)
</th>
<th>
@Html.DisplayNameFor(model => model.LETRAS)
</th>
<th>
@Html.DisplayNameFor(model => model.PISTA)
</th>
<th>
@Html.DisplayNameFor(model => model.categoria.TIPO_CATEGORIA)
</th>
<th>
@Html.DisplayNameFor(model => model.dificuldade.TIPO_DIFICULDADE)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.nomepalavra)
</td>
<td>
@Html.DisplayFor(modelItem => item.LETRAS)
</td>
<td>
@Html.DisplayFor(modelItem => item.PISTA)
</td>
<td>
@Html.DisplayFor(modelItem => item.categoria.TIPO_CATEGORIA)
</td>
<td>
@Html.DisplayFor(modelItem => item.dificuldade.TIPO_DIFICULDADE)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.id_pal }) |
@Html.ActionLink("Details", "Details", new { id=item.id_pal }) |
@Html.ActionLink("Delete", "Delete", new { id=item.id_pal })
</td>
</tr>
}
Jedes Mal, wenn ich meinen Code ausführen einfügen ich Dieser Fehler:
An exception of type 'System.Data.Entity.Infrastructure.DbUpdateException' occurred in EntityFramework.dll but was not handled in user code
Additional information: An error occurred while updating the entries. See the inner exception for details.
Wenn ich die Details überprüfe, scheint es, dass die "Category" -Tabelle und die "Difficulty" -Tabelle null sind, aber die anderen Felder haben alle die Informationen, die ich ihnen gegeben habe.
My Database Schema is the following:
Category connects to Word and Difficulty connects to Word.
Both Category and Difficulty are a 1 to many relationship with the table Word.
einen Haltepunkt in Ihrem Httppost palavra Aktionsmethode Setzen und sehen Sie alll die erforderlichen Eigenschaftswerte haben. – Shyju