【问题标题】:Populate a razor dropdownlist based on a value in the same row (model value)根据同一行中的值(模型值)填充剃刀下拉列表
【发布时间】:2014-05-13 07:19:16
【问题描述】:

我使用以下语法在 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; }
 }

View model 'RequestModel' 下面给出,网格绑定了 Requests 集合数据。即 IList Requests,其中包含 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


Requests 集合中的示例数据

RequestID   AssignedTo   StartedOn
  111         SAM        05/12/2012
  333         KEN        02/23/2006
  222         RAJ        11/30/2006

现在下拉列表绑定了所有的 StatusDescription,但我想根据 Request 集合中的 RequestID 从 RequestStatusModel 中绑定 Statusdescription

【问题讨论】:

  • 一种选择是让 RequestViewModel 具有 FilteredRequestStatus 属性,它将根据您的偏好过滤数据

标签: c# asp.net-mvc html.dropdownlistfor


【解决方案1】:

希望这是你需要的

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>

【讨论】:

    猜你喜欢
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2015-10-15
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多