Как я могу создать два новых поля в списке, отфильтровав одно конкретное поле в 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 (иначе пусто).