Как я могу создать два новых поля в списке, отфильтровав одно конкретное поле в MVC?

У меня есть ViewModel как:

public class ApplicationContentViewModel
{
    public BPMSPARS.Models.MySql.application application {get; set;}
    public BPMSPARS.Models.MySql.content content { get; set; }
    public BPMSPARS.Models.MySql.app_delegation app_delegation { get; set; }
}

С другой стороны, я хочу создать список с этим, помещенным в View:

@foreach (var item in Model)
{
    i++;
    <tr>
        <td>@i</td>
        <th>
           @item.content.CON_VALUE
           //where CATEGORY="TASK"
        </th>
        <th>
            @item.content.CON_VALUE
            //where CATEGORY="PRO_TITLE"
        </th>
        <th>@item.application.APP_CREATE_DATE</th>
        <th>@User.Identity.Name.Split('-')[0]</th>
    </tr>
}

На самом деле я хочу отобразить одно поле в двух столбцах с разными условиями ( @item.content.CON_VALUE),

Во-первых, я использую этот запрос, но он не может вернуть первый @item.content.CON_VALUE и я не могу применить два условия для одного поля (в двух столбцах).

public ActionResult ProcessList()
{ 
   var db1 = new wf_workflowEntities();
   ApplicationContentViewModel APVM = new ApplicationContentViewModel();

   var ViewModel = (from APP in db1.application
                    join app_del in db1.app_delegation on APP.APP_UID equals app_del.APP_UID
                    join Con in db1.content on APP.PRO_UID equals Con.CON_ID
                    where Con.CON_ID == APP.PRO_UID && app_del.APP_UID == APP.APP_UID && Con.CON_CATEGORY == "PRO_TITLE"
                    select new ApplicationContentViewModel
                    {
                        app_delegation = app_del,
                        application = APP,
                        content = Con,
                    }).AsEnumerable();

    return View(ViewModel);
}

Знаете ли вы подходящее решение с этим?

1 ответ

Решение

Если я правильно понимаю, вы должны удалить это условие из вашего запроса:

&& Con.CON_CATEGORY == "PRO_TITLE"

Таким образом, он выберет и PRO_TITLE, и TASK. Тогда в вашем cshtml:

   <th>
       @(item.content.CON_CATEGORY=="TASK"?item.content.CON_VALUE:"")
    </th>
    <th>
        @(item.content.CON_CATEGORY=="PRO_TITLE"?item.content.CON_VALUE:"")
    </th>

Это будет отображать CON_VALUE в первом столбце, когда категория TASK (иначе пусто), и будет отображать CON_VALUE во втором столбце, если это PRO_TITLE (иначе пусто).

Другие вопросы по тегам