本文介绍了如何在MVC在页面上显示来自多个表中的数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在MVC页面上显示来自多个表中的数据?
我的模型:
这是页面模型
公共类PageModel
{
[键]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)
公众诠释的PageId {搞定;组; } 公共字符串的PageTitle {搞定;组; } 公共字符串PageSubject {搞定;组; } 公众的DateTime CREATEDATE {搞定;组; } 公众的DateTime UpdateDate {搞定;组; } 公众诠释的ParentId {搞定;组; } 公共布尔IsActive {搞定;组; } 公众的IList< PageContentModel> PageContentModels {搞定;组; }
公众的IList< CommentModel> CommentModels {搞定;组; }
}
这是内容模型
公共类PageContentModel
{
[键]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)
公众诠释内容识别{搞定;组; } 公众诠释的PageId {搞定;组; }
公共虚拟PageModel PageModel {搞定;组; } [需要]
[数据类型(DataType.MultilineText)
[MAXLENGTH(1024)]
公共字符串内容{搞定;组; }
}
本评论模型
公共类CommentModel
{
[键]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)
公众诠释CommentId {搞定;组; } 公共字符串CommentAuthor {搞定;组; } 公共字符串CommentContent {搞定;组; } 公众的DateTime CREATEDATE {搞定;组; } 公共布尔IsActive {搞定;组; } 公众诠释的PageId {搞定;组; }
公共虚拟PageModel PageModel {搞定;组; }
}
我写了下面
但它注册注释时给出错误信息
错误信息:此对象定义无参数的构造函数
@model元组LT; DynamicWebsite.Models.PageModel,DynamicWebsite.Models.CommentModel>
@helper GetParentTitle(INT ID)
{
如果(ID!= 0)
{
DynamicWebsite.DataLayer.EFDbContext X =新DynamicWebsite.DataLayer.EFDbContext();
VAR项目= x.PageModels.Find(ID);
x.Dispose();
@GetParentTitle(item.ParentId);
<跨度> | &所述; /跨度>&下; A HREF =@ item.PageId> @ item.PageTitle&下; / A> }
其他
{
@ Html.ActionLink(家,索引,家)}
}
@GetParentTitle(Model.Item1.PageId)
@if(Model.Item1.IsActive)
{ ViewBag.Title = Model.Item1.PageTitle; <&字段集GT;
<传奇> PageModel< /传说> < DIV CLASS =显示标签>
一页标题:LT; H2> @ Model.Item1.PageSubject< / H>
< / DIV>
&所述p为H.;
@foreach(在Model.Item1.PageContentModels VAR项)
{
@ item.Content
}
&所述; / P>
@if(Model.Item1.UpdateDate> Model.Item1.CreateDate)
{
<&H5 GT;创建日期:@的String.Format({0:绿},Model.Item1.CreateDate)LT; / H5>
<&H5 GT; UpdateDate:@的String.Format({0:绿},Model.Item1.UpdateDate)LT; / H5>
}
其他
{
<&H5 GT;创建日期:@的String.Format({0:绿},Model.Item1.CreateDate)LT; / H5>
}
@foreach(在Model.Item1.CommentModels VAR项)
{
如果(item.IsActive)
{
< H3> @ item.CommentAuthor说:< / H3 GT&;
&所述p为H.; @ item.CommentContent&下; / P>
<&H5 GT;创建日期:@的String.Format({0:绿},item.CreateDate)LT; / H5>
}
}
< /字段集> 使用(Html.BeginForm())
{
@ Html.ValidationSummary(真)
<&字段集GT;
<传奇> CommentModel< /传说>
< DIV CLASS =编辑标记>
@ Html.LabelFor(型号=> model.Item2.CommentAuthor)
< / DIV>
< DIV CLASS =主编场>
@ Html.EditorFor(型号=> model.Item2.CommentAuthor)
@ Html.ValidationMessageFor(型号=> model.Item2.CommentAuthor)
< / DIV> < DIV CLASS =编辑标记>
@ Html.LabelFor(型号=> model.Item2.CommentContent)
< / DIV>
< DIV CLASS =主编场>
@ Html.EditorFor(型号=> model.Item2.CommentContent)
@ Html.ValidationMessageFor(型号=> model.Item2.CommentContent)
< / DIV>
&所述p为H.;
<输入类型=提交值=创建/>
&所述; / P>
< /字段集>
}}
其他
{
ViewBag.Title =去激活;
< P>这页去激活< / P>
}
解决方案
修正创建一个新的模型误差
公共类PageViewModel
{
公共PageModel PageModel {集;得到; }
公共CommentModel CommentModel {集;得到; }
}
How do I display data from multiple tables on a page in MVC?
My models:
This is page model
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; }
}
This is content model
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; }
}
This comment model
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; }
}
I wrote the following
But it gives an error message when registering comment
Error message: No parameterless constructor defined for this object
@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>
}
解决方案
Create a new model error corrected
public class PageViewModel
{
public PageModel PageModel { set; get; }
public CommentModel CommentModel { set; get; }
}
这篇关于如何在MVC在页面上显示来自多个表中的数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!