根据同一行中的一个值(模型值)填充一个razor下拉列表
本文关键字:一个 模型 下拉列表 填充 razor 一行 | 更新日期: 2023-09-27 18:02:57
我使用以下语法在MVC中填充下拉列表,下拉列表正确地绑定了值。但是我想在将'SelectList'绑定到下拉列表之前过滤它。
@foreach (var item in Model.Requests)
<tr> {
<td>
@Html.DisplayFor(modelItem => item.AssignedTo)
</td>
<td>
@Html.DisplayFor(modelItem => item.StartedOn)
</td>
<td>
@Html.DropDownListFor(m => m.RequestStatus, new SelectList(Model.RequestStatus, "StatusID", "StatusDescription"))
</td>
</tr>
我有一个模型,RequestStatus如下,
public class RequestStatusModel
{
public string RequestID { get; set; }
public string StatusID { get; set; }
public string StatusDescription { get; set; }
}
视图模型'RequestModel'如下所示,网格绑定请求集合数据。即列表请求,其中包含RequestID字段。
public class RequestModel
{
public IList<Request> Requests { get; set; }
public IList<RequestStatusModel> RequestStatus { get; set; }
}
RequestStatusModel中的示例数据。
RequestID StatusID StatusDescription
====================================================
111 1000 Assigned
111 1001 UnAssigned
111 1002 In progress
222 1003 Started
222 1004 In progress
222 1005 Stopped
333 1006 Assigned
333 1007 Completed
请求集合中的示例数据
RequestID AssignedTo StartedOn
111 SAM 05/12/2012
333 KEN 02/23/2006
222 RAJ 11/30/2006
现在下拉列表绑定了所有的StatusDescription,但我想绑定的 StatusDescription 从RequestStatusModel基于 requesttid 在请求集合
希望这是你需要的
public class RequestModel
{
public IList<Request> Requests { get; set; }
public IList<RequestStatusModel> RequestStatus { get; set; }
public IEnumerable<RequestStatusModel> FilteredRequestStatus
{
get
{
return RequestStatus.Where(rs => Requests.Select(r => r.RequestID).Contains(rs.RequestID));
}
}
}
和你的视图
@foreach (var item in Model.Requests)
<tr> {
<td>
@Html.DisplayFor(modelItem => item.AssignedTo)
</td>
<td>
@Html.DisplayFor(modelItem => item.StartedOn)
</td>
<td>
@Html.DropDownList("RequestStatus", new SelectList(Model.FilteredRequestStatus, "StatusID", "StatusDescription"))
</td>
</tr>