5
Come si visualizzano i dati da più tabelle su una pagina in MVC?Come posso visualizzare i dati da più tabelle su una pagina in MVC?
I miei modelli:
Questa la pagina modello
public class PageModel
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int PageId { get; set; }
public string PageTitle { get; set; }
public string PageSubject { get; set; }
public DateTime CreateDate { get; set; }
public DateTime UpdateDate { get; set; }
public int ParentId { get; set; }
public bool IsActive { get; set; }
public IList<PageContentModel> PageContentModels { get; set; }
public IList<CommentModel> CommentModels { get; set; }
}
Questo è il modello di contenuto
public class PageContentModel
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ContentId { get; set; }
public int PageId { get; set; }
public virtual PageModel PageModel { get; set; }
[Required]
[DataType(DataType.MultilineText)]
[MaxLength(1024)]
public string Content { get; set; }
}
Questo commento modello
public class CommentModel
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int CommentId { get; set; }
public string CommentAuthor { get; set; }
public string CommentContent { get; set; }
public DateTime CreateDate { get; set; }
public bool IsActive { get; set; }
public int PageId { get; set; }
public virtual PageModel PageModel { get; set; }
}
ho scritto il seguente
Ma dà un messaggio di errore quando si registra un commento
Messaggio di errore: Nessun costruttore senza parametri definiti per questo oggetto
@model Tuple<DynamicWebsite.Models.PageModel, DynamicWebsite.Models.CommentModel>
@helper GetParentTitle(int id)
{
if (id != 0)
{
DynamicWebsite.DataLayer.EFDbContext x = new DynamicWebsite.DataLayer.EFDbContext();
var item = x.PageModels.Find(id);
x.Dispose();
@GetParentTitle(item.ParentId);
<span>| </span><a href="@item.PageId">@item.PageTitle</a>
}
else
{
@Html.ActionLink("Home", "Index", "Home")}
}
@GetParentTitle(Model.Item1.PageId)
@if (Model.Item1.IsActive)
{
ViewBag.Title = Model.Item1.PageTitle;
<fieldset>
<legend>PageModel</legend>
<div class="display-label">
Page Subject:<h2>@Model.Item1.PageSubject</h2>
</div>
<p>
@foreach (var item in Model.Item1.PageContentModels)
{
@item.Content
}
</p>
@if (Model.Item1.UpdateDate > Model.Item1.CreateDate)
{
<h5>Create Date: @String.Format("{0:g}", Model.Item1.CreateDate)</h5>
<h5>UpdateDate: @String.Format("{0:g}", Model.Item1.UpdateDate)</h5>
}
else
{
<h5>Create Date: @String.Format("{0:g}", Model.Item1.CreateDate)</h5>
}
@foreach (var item in Model.Item1.CommentModels)
{
if (item.IsActive)
{
<h3>@item.CommentAuthor said:</h3>
<p>@item.CommentContent</p>
<h5>Create Date: @String.Format("{0:g}", item.CreateDate)</h5>
}
}
</fieldset>
using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>CommentModel</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Item2.CommentAuthor)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Item2.CommentAuthor)
@Html.ValidationMessageFor(model => model.Item2.CommentAuthor)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Item2.CommentContent)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Item2.CommentContent)
@Html.ValidationMessageFor(model => model.Item2.CommentContent)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
}
else
{
ViewBag.Title = "Deactive";
<p>This page deactive.</p>
}
Creare un [ViewModel ] (http://lostechies.com/jimmybogard/2009/06/30/how-we-do-mvc-view-models/) – jrummell
Cosa intendi con "registrazione del commento"? Dove si trova l'errore nel codice? Quale riga di codice sta generando l'errore? –
registrazione commento: inserisci o aggiungi un nuovo commento per utente ed errore clicca sul pulsante crea –