这是我的看法。如果我打开这个视图,它想要加载下面图片中提到的所有数据列表,例如
但FromDate,ToDate和VisitingDate,CustomerName,EmployeemPurpose of visit,ContactPerson Email的属性有不同的模式。
我的VisitorsViewModel模型
public DateTime FromDate { get; set; }
public DateTime ToDate { get; set; }
我的View_VisitorsForm模型
public System.Guid VisitingID { get; set; }
public string Employee { get; set; }
public string CustomerName { get; set; }
public Nullable<System.DateTime> VisitingDate { get; set; }
public string StartTime { get; set; }
public string EndTime { get; set; }
public string SpendTime { get; set; }
public string POVisit { get; set; }
所以我决定在同一视图中访问两个模型属性,所以我在另一个模型中调用一个模型属性,这在下面的模型中提到
我的VisitorsViewModel模型
public DateTime FromDate { get; set; }
public DateTime ToDate { get; set; }
public ICollection<View_VisitorsForm> Visits { get; set; }
我的控制器代码
public ActionResult displaycustomer()
{
List<View_VisitorsForm> objvisitlist = (from v in db.View_VisitorsForm select v).ToList();
return View(objvisitlist);
}
这是我的控制器代码
List<View_VisitorsForm> objvisitlist = (from v in db.View_VisitorsForm select v).ToList();
这是列出所有数据的查询。
我的观点
@model Sample_Customer.View_VisitorsForm
@{
ViewBag.Title = "DailyVisitReport";
}
<div class="text-center">
<h2 style="color: #0000FF">Visit Report</h2>
</div>
<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<link href="~/Content/bootstrap.css" rel="stylesheet" />
<script src="~/Content/BootStrap/js/bootstrap.js"></script>
<script src="~/Content/BootStrap/js/bootstrap.min.js"></script>
<div class="col-xs-12">
<div class="container">
<div class="col-sm-4">
<div class="form-group">
@Html.LabelFor(model=>model.FromDate)
@Html.TextBoxFor(model=>model.FromDate,new { @class = "form-control", type = "text" })
</div>
</div>
<div class="col-sm-4">
<div class="form-group">
@Html.LabelFor(model => model.ToDate)
@Html.TextBoxFor(model => model.ToDate, new { @class = "form-control", type = "text"})
</div>
</div>
<div class="col-sm-5">
<div class="form-group">
<input id="Button1" type="button" value="Ok" />
</div>
</div>
</div>
</div>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="color: #1a1ae9">Visiting Date</th>
<th style="color: #1a1ae9">Customer Name</th>
<th style="color: #1a1ae9">Employee</th>
<th style="color: #1a1ae9">Purpose of Visit</th>
<th style="color: #1a1ae9">Contact Person</th>
<th style="color: #1a1ae9">Description</th>
<th style="color: #1a1ae9">Next Appointment</th>
</tr>
</thead>
<tbody>
@foreach (var i in Model.??)in this place ?? i donno which object i have to call here
{
<tr>
<td>
@Convert.ToString(string.Format("{0:MMM-dd-yyyy}", i.VisitingDate))
</td>
<td>
@i.CustomerName
</td>
<td>
@i.Employee
</td>
<td>
@i.POVisit
</td>
<td>
@i.ContactPerson
</td>
<td>
@i.Description
</td>
<td>
@Convert.ToString(string.Format("{0:MMM-dd-yyyy}", i.NextAppointment))
</td>
</tr>
}
</tbody>
</table>
我怀疑是通过
调用VisitorsViewmodel中的一个模型(view_visitorsForm) public ICollection<View_VisitorsForm> Visits { get; set; }
当我打开页面时,我必须列出视图中的所有数据。所以在控制器中我写了这段代码
List<View_VisitorsForm> objvisitlist = (from v in db.View_VisitorsForm select v).ToList();
现在我通过将模型名称设为 VisitorsViewModel 来创建视图。现在我的疑问是我必须在 ?? (在foreach行中)调用哪个对象。所以当我打开页面时它会显示所有数据..
我试图按照我的水平解释我的问题,请任何人了解我的问题并帮助我解决这个问题。
预感谢。
答案 0 :(得分:2)
每当您需要在View
中使用多个模型时,建议您创建一个包装器ViewModel
类。并且您已通过创建VisitorsViewModel
来完成此操作。但是,当您已经拥有VisitorsViewModel
模型且具有来自及迄今为止的属性时,您还可以在VisitorsViewModel
中拥有此类的属性,但这是一个单独的内容。
现在回到您的问题,确保您已将View
与VisitorsViewModel
模型绑定。
在您的控制器方法中,首先创建模型的实例,初始化Visits
属性并将其传递给view。像这样的东西 -
public ActionResult displaycustomer()
{
List<View_VisitorsForm> objvisitlist = (from v in db.View_VisitorsForm select v).ToList();
VisitorsViewModel model = new VisitorsViewModel();
model.Visits = objvisitlist;
return View(model);
}
...在您的View
中,您可以访问此对象,例如 -
@foreach (var i in Model.Visits)
答案 1 :(得分:0)
您可以像这样使用 Tuple ..
@model Tuple<FirstModel, SecondModel>
<div>
@Model.Item1.FirstModelProp
@Model.Item2.SecondModelProp
</div>
答案 2 :(得分:0)
您可以创建包含其他模型的模型