C# 当我试图在MVC视图中显示表中的最后一条记录时,它会重复
我正在开发一个MVC web应用程序,当我试图将填充的模型显示到表中时遇到了一个问题。我应该显示30条独特的记录,但最后一条记录显示了30次。当我使用换行符和单步执行时,它似乎填充了唯一的记录。下面是我的控制器和视图 型号:C# 当我试图在MVC视图中显示表中的最后一条记录时,它会重复,c#,asp.net-mvc,C#,Asp.net Mvc,我正在开发一个MVC web应用程序,当我试图将填充的模型显示到表中时遇到了一个问题。我应该显示30条独特的记录,但最后一条记录显示了30次。当我使用换行符和单步执行时,它似乎填充了唯一的记录。下面是我的控制器和视图 型号: namespace WebServicesApp.Models { public class FilingViewModel { public static Filing filing = new Filing(); public static F
namespace WebServicesApp.Models
{
public class FilingViewModel
{
public static Filing filing = new Filing();
public static FilingMaster filingMaster = new FilingMaster();
}
}
控制器:
public ActionResult FilingHomePage()
{
DatabaseClass db = new DatabaseClass();
DataSet ds = new DataSet();
var model = new List<FilingViewModel>();
db.GetFiling(ref ds, "10600");
foreach (DataRow dr in ds.Tables[0].Rows)
{
var filingViewModel = new FilingViewModel();
FilingViewModel.filing.Service = dr.Field<string>("Service");
FilingViewModel.filing.filing_Description = dr.Field<string>("filing_Description");
FilingViewModel.filing.Date_Post = dr.Field<DateTime>``("Date_Due");
model.Add(filingViewModel);
}
return View(model);
}
公共行动结果备案主页()
{
DatabaseClass db=新的DatabaseClass();
数据集ds=新数据集();
var模型=新列表();
db.GetFile(参考ds,“10600”);
foreach(ds.Tables[0].行中的数据行dr)
{
var filingViewModel=新的filingViewModel();
FilingViewModel.Filling.Service=dr.Field(“服务”);
FilingViewModel.filing.filing_Description=dr.Field(“filing_Description”);
FilingViewModel.filing.Date_Post=dr.Field``(“到期日期”);
model.Add(filingViewModel);
}
返回视图(模型);
}
视图:
@using WebServicesApp.Models
@model List<FilingViewModel>
@{
ViewBag.Title = "FilingHomePage";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="container">
<div class="jumbotron">
<h2>Welcome to Filing Center</h2>
<p>From here you can see your returns that need to be filed, view your
filing history, and create a new filing record</p>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="panel panel-default">
<div class="panel-heading">Returns to File</div>
<div class="panel-body">
<p>The following are returns that need to be filed. Please select </p>
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th>Filing Name</th>
<th>Filing Description</th>
<th>Date Posted</th>
</tr>
</thead>
<tbody>
@foreach (var filing in Model)
{
<tr>
<td>@FilingViewModel.filing.Service
<td>@FilingViewModel.filing.filing_Description</td>
<td>@FilingViewModel.filing.Date_Post</td>
<td><a>Select</a></td>
</tr>
}
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="panel panel-default">
<div class="panel-heading">Return History</div>
<div class="panel-body">
<p>Below is a list of filings that have been posted</p>
<div class="table-responsive">
<table class="table">
<tr>
<th>Filing Name</th>
<th>Filing Description</th>
<th>Date Posted</th>
</tr>
</table>
</div>
</div>
</div>
</div>
@*<div class="col-sm-4">
<div class="panel panel-default">
<div class="panel-heading">Create New Filing</div>
<div class="panel-body">
<p>Here you can enter information for a filing that does not exist yet.</p>
<form class="form-horizontal">
</form>
</div>
</div>
</div>*@
</div>
@使用WebServicesApp.Models
@模型列表
@{
ViewBag.Title=“文件主页”;
Layout=“~/Views/Shared/_Layout.cshtml”;
}
欢迎来到档案中心
从这里您可以看到您需要提交的申报表,查看您的
归档历史记录,并创建新的归档记录
返回文件
以下是需要提交的申报表。请选择
文件名
归档说明
公布日期
@foreach(模型中的var归档)
{
@FilingViewModel.Filling.Service
@FilingViewModel.Filling.Filling\u说明
@FillingViewModel.Filling.Date_Post
挑选
}
回归历史
以下是已发布的文件列表
文件名
归档说明
公布日期
@*
创建新文件
您可以在此处输入尚未存在的归档信息
*@
在您的型号中
public class FilingViewModel
{
public List<Filing> Filings { get; set; };
}
公共类文件视图模型
{
公共列表文件{get;set;};
}
在控制器中
var model = new FilingViewModel();
foreach (DataRow dr in ds.Tables[0].Rows)
{
var filing = new Filing();
filing.Service = dr.Field<string>("Service");
filing.filing_Description = dr.Field<string>("filing_Description");
filing.Date_Post = dr.Field<DateTime>``("Date_Due");
model.Filings.Add(filing);
}
var模型=新文件视图模型();
foreach(ds.Tables[0].行中的数据行dr)
{
var申报=新申报();
归档服务=dr.Field(“服务”);
filing.filing_Description=dr.Field(“filing_Description”);
file.Date_Post=dr.Field`(“到期日期”);
模型。归档。添加(归档);
}
在你看来:
@model FilingViewModel
@foreach (var filing in Model.Filings)
{
<tr>
<td>@filing.Service
<td>@filing.filing_Description</td>
<td>@filing.Date_Post</td>
<td><a>Select</a></td>
</tr>
}
@model文件视图模型
@foreach(模型文件中的var文件)
{
@归档服务
@归档
@提交日期
挑选
}
我认为剃须刀部分应该是
@foreach (var filing in Model)
{
<tr>
<td>@filing.filing.Service
<td>@filing.filing.filing_Description</td>
<td>@filing.filing.Date_Post</td>
<td><a>Select</a></td>
</tr>
}
@foreach(模型中的var归档)
{
@归档、归档、服务
@归档。归档。归档描述
@存档日期
挑选
}
更改您的型号:
namespace WebServicesApp.Models
{
public class FilingViewModel
{
public FilingViewModel() {
this.filing = new Filing();
this.filingMaster = new FilingMaster();
}
public Filing filing {get;set;}
public FilingMaster filingMaster {get;set;}
}
}
然后在你的控制器里
var model = new FilingViewModel();
foreach (DataRow dr in ds.Tables[0].Rows)
{
var filingViewModel = new FilingViewModel();
filingViewModel .filing.Service = dr.Field<string>("Service");
filingViewModel .filing.filing_Description = dr.Field<string>("filing_Description");
filingViewModel .filing.Date_Post = dr.Field<DateTime>``("Date_Due");
model.Add(filingViewModel);
}
var模型=新文件视图模型();
foreach(ds.Tables[0].行中的数据行dr)
{
var filingViewModel=新的filingViewModel();
filingViewModel.filing.Service=dr.Field(“服务”);
filingViewModel.filing.filing_Description=dr.Field(“filing_Description”);
filingViewModel.filing.Date_Post=dr.Field``(“到期日期”);
model.Add(filingViewModel);
}
如何设置您的文件视图模型的属性?我看到您正在创建一个新实例并将其添加到model
列表中,但是没有在实例中设置属性。我是您的视图您似乎正在访问一个静态实例(FillingViewModel
),而不是访问filling
变量。将@FillingViewModel.filling.xxx替换为@filling.xxxI有两个模型我将用于此视图(filling和FillingMaster)。为此,我创建了FilingViewModel模型。我编辑了问题以包含模型。您有静态
字段!-它们必须是属性-公共文件归档{get;set;}
和公共文件归档主机归档主机{get;set}
您需要更改您的模型,您使用的是静态字段,因此此字段的所有实例的值都相同。更改公共类FilingViewModel上的属性的静态值,并在此类的构造函数上更改InstanceState。然后在foreach行中,需要更改以使用实例(现在正在使用该类)。其余的看起来都不错。当我这样做时,在filingViewModel.Filling下会出现一条红线,表示“无法使用实例引用访问成员,请使用类型名称对其进行限定。”这是因为您将Filling标记为static。如果不需要在viewmodel之外访问该属性,则应删除该属性。应该如下所示:public fileing{get;set;}您每次都会得到最后一个归档对象的原因是因为您正在ViewModel中更新归档对象,然后在控制器循环中更新y