0

我有一个 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; }
}

另一方面,我想在视图中创建一个列表:

@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);
}

你知道一个合适的解决方案吗?

4

1 回答 1

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>

当类别为 TASK(否则为空白)时,这将在第一列中显示 CON_VALUE,如果为 PRO_TITLE(否则为空白),它将在第二列中显示 CON_VALUE。

于 2018-03-17T22:25:30.577 回答