Recentemente ho iniziato a giocare con ASP.net MVC (4), ma non riesco a comprendere il problema che sto affrontando. Sono sicuro che è facile quando lo sai.Utilizzo di viste parziali in ASP.net MVC 4
sto essenzialmente cercando di fare la seguente, a mio avviso Index:
- Lista le voci correnti nel database di tipo "Note" nella vista indice (che è facile)
- Creazione di un nuovo articoli nella stessa vista indice (non così facile).
così ho pensato che mi serviva una vista parziale, e che ho creato come segue (_CreateNote.cshtml):
@model QuickNotes.Models.Note
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Note</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Content)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Content)
@Html.ValidationMessageFor(model => model.Content)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
A mio avviso originale Index (Index.cshtml) sto cercando di rendono questa vista parziale:
@model IEnumerable<QuickNotes.Models.Note>
@{
ViewBag.Title = "Personal notes";
}
<h2>Personal notes</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.Content)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Content)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}
</table>
<div>
@Html.Partial("_CreateNote")
</div>
(utilizzando: @ Html.Partial ("_ CreateNote")) Tuttavia. Questo non sembra funzionare, come ottengo il seguente messaggio di errore:
Line 35:
Line 36: <div>
Line 37: @Html.Partial("_CreateNote");
Line 38: </div>
Source File: c:\Dropbox\Projects\workspace .NET MVC\QuickNotes\QuickNotes\Views\Notes\Index.cshtml Line: 37
Stack Trace:
[InvalidOperationException: The model item passed into the dictionary is of type 'System.Data.Entity.DbSet`1[QuickNotes.Models.Note]', but this dictionary requires a model item of type 'QuickNotes.Models.Note'.]
System.Web.Mvc.ViewDataDictionary`1.SetModel(Object value) +405487
mio NotesController si presenta così:
public ActionResult Index()
{
var model = _db.Notes;
return View(model);
}
//
// GET: /Notes/Create
public ActionResult Create()
{
return View();
}
//
// GET: /Notes/_CreateNote - Partial view
public ViewResult _CreateNote()
{
return View("_CreateNote");
}
Io penso che abbia a che fare con il fatto che la vista è Index usando diversamente il modello, come in @model IEnumerable, ma non importa come lo cambio, usando RenderPartial, RenderAction, cambiando ActionResult a ViewResult ecc., non riesco a farlo funzionare.
Qualsiasi consiglio sarebbe molto apprezzato! Per favore fatemi sapere se avete bisogno di ulteriori informazioni. Sarei felice di comprimere l'intero progetto, se necessario.
Lei ha ragione! Molte grazie! In realtà ho provato quasi lo stesso un sacco di volte, ma non ho capito che avevo bisogno della "nuova" affermazione. Stupido me :( –