无法传递数据进行查看;错误:不包含(模型中的每个列字段)的定义 [英] Unable to pass data to view; Error: Does not contain a definition for (Each column field in model)
问题描述
我正在尝试显示一个显示新泽西州所有工作单的视图. 这是我的工作订单模型:
I am trying to have a view that shows all work orders in the state of New Jersey. This is my work order model:
public class WorkOrder
{
public int UserId { get; set; }
public string LocationId { get; set; }
public string Reason { get; set; }
public bool IsActive { get; set; } = true;
public DateTime Date { get; set; } = DateTime.Now;
public string StateId { get; set; }
}
在我试图传递我所拥有的数据的视图中:
In my View where I am trying to pass the data I have:
@model IEnumerable<WorkOrder>
@{
ViewData["Title"] = "Work Orders";
}
<div class="by-location">
<h1>By Location</h1>
<ul>
<li> @Html.ActionLink("Delaware", "Delaware",
"HomeController")</li>
<li>
@Html.ActionLink("New Jersey", "New Jersey",
"HomeController")
</li>
<li>
@Html.ActionLink("Pennsylvania", "Pennsylvania",
"HomeController")
</li>
</ul>
</div>
<div class="container">
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.UserId)
</th>
<th>
@Html.DisplayNameFor(model => model.LocationId)
</th>
<th>
@Html.DisplayNameFor(model => model.Reason)
</th>
<th>
@Html.DisplayNameFor(model => model.IsActive)
</th>
<th>
@Html.DisplayNameFor(model => model.Date)
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.UserId)
</td>
<td>
@Html.DisplayFor(modelItem => item.LocationId)
</td>
<td>
@Html.DisplayFor(modelItem => item.Reason)
</td>
<td>
@Html.DisplayFor(modelItem => item.IsActive)
</td>
<td>
@Html.DisplayFor(modelItem => item.Date)
</td>
<td>
@Html.DisplayFor(modelItem => item.StateId)
</td>
</tr>
}
</table>
</div>
我仅尝试显示位置等于"NJ"的数据,因此我在Controller中有一个要在Controller中调用的方法,该方法应该返回View for New Jersey工作订单,但所有方法都具有在状态=某物的情况下获取工作命令的逻辑.
I am only trying to display the data where the location is equal to "NJ" so I have a method in my Controller that I am calling in my Controller that is supposed to return the View for New Jersey work orders but all has the logic for Getting work orders where the State = something.
public IActionResult Nj(string stateId)
{
var njWorkOrders = GetWorkOrders()
.Where(x => x.StateId == stateId).ToList();
return View(njWorkOrders);
}
这是我的GetWorkOrders函数:
Here is my GetWorkOrders function:
public List<WorkOrder> GetWorkOrders()
{
List<WorkOrder> workOrders = new List<WorkOrder>();
workOrders.Add(new WorkOrder
{
UserId = 1,
LocationId ="Philadelphia",
Date = DateTime.Now,
Reason = "Lights",
IsActive = true,
StateId = "PA"
});
workOrders.Add(new WorkOrder
{
UserId = 2,
LocationId = "Camden",
Date = DateTime.MinValue,
Reason = "Plumbing",
IsActive = true,
StateId = "NJ"
});
workOrders.Add(new WorkOrder
{
UserId = 3,
LocationId = "Burlington",
Date = DateTime.Now,
Reason = "Water",
IsActive = false,
StateId = "NJ"
});
workOrders.Add(new WorkOrder
{
UserId = 4,
LocationId ="Wilmington",
Date = DateTime.MaxValue,
Reason = "Lights",
IsActive = true,
StateId = "DE"
});
// return the work orders to be used by your view methods
return workOrders;
}
推荐答案
几件事:
-
您无法返回IActionResult.您必须返回 ActionResult .
由于控制器操作需要一个参数,因此必须在查询字符串中传递stateId,如下所示
Since your controller action is expecting an argument, you have to pass the stateId in query string like below
http://localhost:52023/Home/Nj?stateId = NJ
这篇关于无法传递数据进行查看;错误:不包含(模型中的每个列字段)的定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!